簡體   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