Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tiêu chí ngủ đông với tự tham gia

Có thể có với API tiêu chí của Hibernate, nhưng không phải ngay lập tức.

Một trường hợp đơn giản sẽ yêu cầu cùng một đường dẫn liên kết phải được tham gia hai lần (một cho A và một cho 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();

Điều này sẽ không hoạt động do HHH-879 .

Nhưng bạn có thể sử dụng truy vấn 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();

Đây thậm chí còn ít mã hơn.

Ngoài ra:Một số coi API tiêu chí là không dùng nữa .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cài đặt MySQLdb trên Snow Leopard

  2. cách sao chép một lược đồ trong mysql bằng java

  3. Cách thay thế mẫu regex trong MySQL

  4. MYSQL:Mệnh đề ở đâu không rõ ràng

  5. tính toán khoảng cách trong truy vấn mysql