À l'aide de requêtes HQL pour sélectionner à partir de tables jointes avoir un à plusieurs " de la relation entre eux

Je suis coincé avec ce Hibernate chose et ne sais pas comment faire pour le comprendre. S'il vous plaît aider !

J'ai donc ces deux tables:

POSITION
positionid(PK), description

JOB
jobid(PK),positionid(FK),description

Comment puis-je utiliser les requêtes HQL en veille prolongée pour aller chercher de l'ensemble des emplois avec leurs descriptions de poste ?

Edit: Donc, ce que je suis en train de réaliser:

JOBID     POSITION.DESCRPTION     JOB.DESCRIPTION
  1        Teacher                Science Teacher
  2        Coach                  Football Coach

et ainsi de suite pour tout le travail est dans le tableau des tâches. Je suis à essayer de comprendre ce que sera HQL pour cela.

J'ai mis en place le code suivant jusqu'à maintenant :

position.hbm.xml

<hibernate-mapping>
  <class name="com.XXXX.model.Position" table="POSITION">
   <id name="positionID" type="int" column="POSITIONID" >
   <generator class="assigned"/>
  </id>

  <property name="description">
   <column name="DESCRIPTION" />
  </property>

  <set name="jobs">
    <key column="positionID" />
    <one-to-many class="com.XXXX.model.Job" />
  </set>

 </class>
</hibernate-mapping>

job.hbm.xml

<hibernate-mapping>

  <class name="com.XXXX.model.Job" table="JOB">
   <id name="jobID" type="int" column="JOBID" >
   <generator class="assigned"/>
  </id>

  <property name="description">
   <column name="DESCRIPTION" />
  </property>

  <many-to-one name="position" class="com.XXXX.model.Position" column="positionID" />

 </class>
</hibernate-mapping>

Position.java

public class Position {

    private int positionID;
    private String description;
    private Set<Job> jobs = new HashSet<Job>();

    //Getters and Setters for all the above three follows...

}

Job.java

public class Job {

    private int jobID;
    private String description;
    private Position position;

    //Getters and Setters for all the above three follows...
}

Dans mon code j'utilise maintenant

session.createQuery("from Position as p left join p.positionID as pid").list();

Je sais que c'est pas correct et je reçois l'erreur de suivi:

java.lang.NullPointerException
    at org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:317)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3268)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3060)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2938)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
    .........................
    ...........................

Quelqu'un peut me dire comment résoudre ce problème s'il vous plaît ?

  • Une jointure est utilisé pour naviguer à travers une association entre deux entités. Votre requête n'a pas de sens. Que voulez-vous vraiment atteindre? Vous dites que yuou voulez tous les travaux avec leur description de poste, mais votre montre le code que vous voulez obtenir un List<Position>.
  • Salut, je comprends la confusion, j'ai essayé avec la requête que j'ai cité ci-dessus, même pas sûr que ce soit correct. J'ai maintenant mis à jour la question de ce que je suis vraiment essayer de l'atteindre.