[英]Hibernate - different values of two fields mapped the same column
I have 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;
And when I read entity object from db: entityManager.find(entityClass, id);
当我从数据库读取实体对象时:
entityManager.find(entityClass, id);
Sometimes entity.getDatabase().getId()
has correct value, but entity.getDatabaseId() = 0;
有时,
entity.getDatabase().getId()
值正确,但是entity.getDatabaseId() = 0;
And I can't resolve why it's happen. 而且我无法确定为什么会这样。
So, what is the reason of this strange behavior may be? 那么,这种奇怪行为的原因可能是什么?
You should not keep databaseId
in your entity, that's not correct. 您不应该在您的实体中保留
databaseId
,这是不正确的。 You have correct mapping. 您有正确的映射。
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "database_id", nullable = false, insertable = true, updatable = true)
private Database database;
Now, if you want to get database id value, you can just use entity.getDatabase().getId()
end this statement won't perform any additional sql query, even if you use Lazy loading. 现在,如果要获取数据库ID值,则可以只使用
entity.getDatabase().getId()
,即使使用延迟加载,该语句也不会执行任何其他SQL查询。
You can also use database id in queries. 您也可以在查询中使用数据库ID。
Query q = em.createQuery("select e from MyEntity e where e.database.id = :id");
This query doesn't perform any joins. 该查询不执行任何联接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.