2013-06-04 62 views
0

我有一個具有複合主鍵的實體。所以我使用@EmbeddedId註釋創建了實體類的主類。休眠 - 使用任何一個主鍵獲取具有複合主鍵的實體

我需要幫助。在獲取該實體時,是否可以獲取主鍵之一?

我試圖通過主鍵之一來獲取該實體,其他主鍵設置爲零,並沒有獲得任何結果。

是否有任何方式通過指定該實體的主鍵之一來獲取實體(具有複合主鍵)?

示例代碼:

EmbeddedRiskDetailPK riskDetailPK = new EmbeddedRiskDetailPK(); 
riskDetailPK.setRiskId(riskId); 

Criteria criteria = hibernateDBSession.createCriteria(RiskDetail.class, "riskDetail") 
           .add(Restrictions.eq("riskDetail.embeddedRiskDetailPK ",riskDetailPK)); 
isRecordCount = criteria.uniqueResult() != null ? ((Number)criteria.uniqueResult()).longValue() : 0; 

回答

0

1)你可以爲實體

2)如果您按主鍵比較,您可以通過整個主鍵比較只能有一個主鍵,所以你必須給完成實體

3)如果您通過@IdClass註釋指定ID,那麼您在表示主鍵的每個組件的實體上有字段,並且您可以在HQL或Criteria中引用它們,所以也許您應該考慮重新命名?我在那個答案中做了一個例子:Why is my EmbeddedId in hibernate not working?