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;
4

1 回答 1

0

1)实体只能有一个主键

2)如果你按主键比较,你按整个主键比较,所以你必须给出完整的实体

3)如果您通过@IdClass注释指定ID,则实体上有代表主键每个组件的字段,您可以在HQL或Criteria中引用它们,所以也许您应该考虑重新设计?我在那个答案中做了一个例子:为什么我的 EmbeddedId 在休眠中不起作用?

于 2013-06-04T10:34:22.593 回答