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

Java Hibernate-使用任意一个主键获取具有复合主键的实体,java,hibernate,jakarta-ee,Java,Hibernate,Jakarta Ee,我有一个具有复合主键的实体。因此,我使用@EmbeddedId注释为实体类创建了主类 我需要帮助。在获取该实体时,是否可以获取主键之一 我试图传递一个主键来获取该实体,其他主键被设置为零,并且没有得到任何结果 有没有办法通过为实体指定一个主键来获取实体(具有复合主键) 示例代码: EmbeddedRiskDetailPK riskDetailPK = new EmbeddedRiskDetailPK (); riskDetailPK.setRiskId(riskId); Criteria cr

我有一个具有复合主键的实体。因此,我使用
@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) 实体只能有一个主键

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

< P > 3)如果通过“代码> > IdClass 注释指定ID,则在表示主键的每个组件的实体上有字段,并且可以在HQL或标准中引用它们,所以也许您应该考虑重新设计?我在回答中举了一个例子: