[英]Hibernate: Two OneToMany properties, mapped by the same entity with different columns
[英]Hibernate - different values of two fields mapped the same column
我有两个字段映射到同一列:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "database_id", nullable = false, insertable = true, updatable = true)
private Database database;
@Column(name = "database_id", nullable = false, insertable = false, updatable = false)
private long databaseId;
当我从数据库读取实体对象时: entityManager.find(entityClass, id);
有时, entity.getDatabase().getId()
值正确,但是entity.getDatabaseId() = 0;
而且我无法确定为什么会这样。
那么,这种奇怪行为的原因可能是什么?
您不应该在您的实体中保留databaseId
,这是不正确的。 您有正确的映射。
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "database_id", nullable = false, insertable = true, updatable = true)
private Database database;
现在,如果要获取数据库ID值,则可以只使用entity.getDatabase().getId()
,即使使用延迟加载,该语句也不会执行任何其他SQL查询。
您也可以在查询中使用数据库ID。
Query q = em.createQuery("select e from MyEntity e where e.database.id = :id");
该查询不执行任何联接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.