2013-06-04 3 views
0

J'ai une entité qui a une clé primaire composite. J'ai donc créé la classe primaire pour la classe d'entité avec l'annotation @EmbeddedId.Hibernate - Entité de récupération ayant une clé primaire composite utilisant l'une quelconque de la clé primaire

J'ai besoin d'aide. En récupérant cette entité, est-il possible d'aller chercher celle de la clé primaire?

J'ai essayé de passer l'une des clés primaires pour récupérer cette entité, les autres clés primaires sont mises à zéro et aucun résultat obtenu.

Existe-t-il un moyen d'extraire une entité (qui a une clé primaire composite) en spécifiant l'une des clés primaires pour cette entité?

Exemple de code:

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; 

Répondre

0

1) Vous pouvez avoir qu'une seule clé primaire pour l'entité

2) Si vous comparez par clé primaire, vous comparez par toute clé primaire, vous devez donc donner complète entité

3) Si vous spécifiez ID par @IdClass annotation, vous avez des champs sur l'entité représentant chaque composant de la clé primaire, et vous pouvez les référencer dans HQL ou Criteria, vous devriez peut-être envisager de les redéfinir? J'ai fait un exemple dans cette réponse: Why is my EmbeddedId in hibernate not working?

Questions connexes