Hibernate - 使用任何一个主键获取具有复合主键的实体

时间:2013-06-04 10:26:04

标签: java hibernate java-ee

我有一个具有复合主键的实体。所以我用@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;

1 个答案:

答案 0 :(得分:0)

1)实体

只能有一个主键

2)如果按主键进行比较,则按整个主键进行比较,因此必须提供完整的实体

3)如果您通过@IdClass注释指定ID,则实体上的字段代表主键的每个组件,您可以在HQL或Criteria中引用它们,那么您是否应该考虑重新签名?我在答案中做了一个例子:Why is my EmbeddedId in hibernate not working?