Mysql
 sql >> база данни >  >> RDS >> Mysql

Критерии за хибернация със самостоятелно присъединяване

Може би е възможно с API Критерии на Hibernate, но не направо.

Един прост случай би изисквал един и същ път на асоцииране да се присъедини два пъти (един за 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 .

Но можете да използвате JPA заявка:

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. Как да генерирам уникален, произволен низ за една от колоните на моята MySql таблица?

  2. Работа с голямо количество данни от mysql

  3. Външен ключ на алтернатива на таблицата myisam?

  4. Динамично изграждане на заявки в релсите

  5. Как да преместите локална MYSQL DB до отдалечен DB сървър