我有一个具有复合主键的实体。所以我用@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 :(得分:0)
1)实体
只能有一个主键2)如果按主键进行比较,则按整个主键进行比较,因此必须提供完整的实体
3)如果您通过@IdClass
注释指定ID,则实体上的字段代表主键的每个组件,您可以在HQL或Criteria中引用它们,那么您是否应该考虑重新签名?我在答案中做了一个例子:Why is my EmbeddedId in hibernate not working?