一般情況:第一張表格代表一個 -side,第二張表格代表很多 -side。第三張表格是兩者之間的聯繫。如何實現一對多映射關聯表是所有一對多關係之一嗎?
我的情況:第一個和第二個表是相同的。第三張表作爲所有具有一對多關係的表對之間的鏈接。該第三個表具有附加字段(字符串),其中包含有關2個表的信息。
小例子。假設我們有表格Project和Category(一個類別 - >許多項目)。爲了獲得與類別,我們需要執行一個查詢所有項目:
select project.name, category.name
from nodeassociation, project, category
where nodeassociation.association_name='ProjectCategory'
and nodeassociation.source_id=project.id
and nodeassociation.sink_id=category.id
我如何通過JPA的方式指定association_name標準?
UPD:如果JPA不可能,但hibernate處理它,那麼沒關係,什麼是hibernate解決方案?
然後你沒有通過hibernate的關係的自動持久性:如果你添加一個類別到你的項目,並保存項目,你將需要堅持自己的類別和關聯。那麼你會失去很多hibernate的力量。如果使用DAO保存對象,DAO可以完成這項工作,但不能簡單地加載/修改實體,您需要每次加載/修改/保存。也許EntityListener可以以更透明的方式完成這項工作。 – ewernli 2010-01-05 14:06:53
我會閱讀關於EntityListener。你是對的,我在你的評論出現之前就知道這一切,但我沒有看到任何其他出路。 我無法修改數據庫模式。 我的應用程序只能從數據庫中讀取,這使我可以手動更改對象。否則,在應用我的解決方案之前我可能會考慮三次。 – Roman 2010-01-05 14:45:45