Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

स्वयं शामिल होने के साथ हाइबरनेट मानदंड

शायद हाइबरनेट के मानदंड एपीआई के साथ संभव है, लेकिन सीधे आगे नहीं।

एक साधारण मामले के लिए एक ही एसोसिएशन पथ को दो बार शामिल होने की आवश्यकता होगी (एक A . के लिए) और एक P . के लिए ):

Criteria gameCriteria = ((HibernateEntityManager) em).getSession().createCriteria(Game.class);

Criteria playedGamesOfACriteria = gameCriteria.createCriteria("playedGames", "pga");
Criteria accountOfACriteria = playedGamesOfACriteria.createCriteria("account", "a");
accountOfACriteria.add(Restrictions.idEq(a.id));

Criteria playedGamesOfPCriteria = gameCriteria.createCriteria("playedGames", "pgp");
Criteria accountOfPCriteria = playedGamesOfPCriteria.createCriteria("account", "p");
accountOfPCriteria.add(Restrictions.idEq(p.id));

return gameCriteria.list();

यह HHH-879 के कारण काम नहीं करेगा ।

लेकिन आप जेपीए क्वेरी का उपयोग कर सकते हैं:

Query q = em.createQuery(
        "select g "
        + "from Game g "
        + "join g.playedGames pga "
        + "join pga.account a "
        + "join g.playedGames pgp "
        + "join pgp.account p "
        + "where a = ?1 and p = ?2"
);
q.setParameter(1, a);
q.setParameter(2, p);
return q.getResultList();

यह और भी कम कोड है।

साथ ही:कुछ लोग मानदंड API को बहिष्कृत




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कोडनिर्देशक में सक्रिय रिकॉर्ड योग

  2. मैं वर्डप्रेस में एक mysql क्वेरी कैसे चला सकता हूं?

  3. JSON स्ट्रिंग में MYSQL REGEXP खोज

  4. MySQL इंडेक्स क्वेरी को धीमा कर रहा है

  5. एक निश्चित समय के बाद MySQL रिकॉर्ड को कैसे डिलीट करें