繁体   English   中英

休眠-映射同一列的两个字段的不同值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM