sql >> Database teknologi >  >> RDS >> Mysql

Dvalekriterier med selvtilslutning

Måske muligt med Hibernates Criteria API, men ikke ligetil.

En simpel sag ville kræve, at den samme tilknytningssti forbindes to gange (en for A og en for 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();

Dette virker ikke på grund af HHH-879 .

Men du kan bruge en JPA-forespørgsel:

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();

Dette er endnu mindre kode.

Også:Nogle anser Criteria API for at være udfaset .




  1. mysql_insert_id problem ved samtidig indsættelse af data

  2. Identitetslignende kolonne, men baseret på Group By-kriterier

  3. Java-forbindelse til Cloud SQL 2nd Gen fra Appengine Managed VM

  4. Hvordan installerer man ROracle-pakken på Windows 7?