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