Announcement

Collapse
No announcement yet.

Fehlerhafte Hibernate Beziehung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehlerhafte Hibernate Beziehung

    Hi Leute

    Ich entwickle eine Java Applikation mit Tomcat 5.0.28, Struts, JSP, MSSQL Server und Hibernate 2.1.7c.

    <br>
    Es gibt eine Klasse Project und eine Klasse ExtendedProject mit einer @hibernate.one-to-one Beziehung zu Project in Form eines Attributs private Project project.
    Auszug aus ExtendedProject.hbm.xml (Attribut project):
    <one-to-one
    name="project"
    class="com.seeburger.bilbo.vo.Project"
    cascade="none"
    outer-join="auto"
    constrained="false"
    />
    <br>
    Ich habe Probleme mit folgender Hibernatequery:
    String query = "select p from ExtendedProject as p, ProjectUserAssignment as pua where pua.user = ? and pua.project = p.project and p.project.status = ? ";
    <br>
    Alternative Möglichkeit:
    String query = "select ep from ExtendedProject as ep, Project as p, ProjectUserAssignment as pua where pua.user = ? and pua.project = p and p.status = ? and ep.project = p";
    <br>
    Die Funktion dao.query fügt in die Fragezeichen die angegebenen Parameter user vom Typ user und Project.STATUS_ACTIVE vom typ String ein (das funktioniert):
    projects = dao.query(query, new Object[]{user, Project.STATUS_ACTIVE});
    <br>
    Beide Möglichkeiten der Query verursachen eine Exception und ich habe keine Ahnung warum.
    <br>
    So sah die query mit dem alten Objekttyp Project anstatt ExtendedProject aus und so hat sie auch funktioniert:
    String query = "select p from Project as p, ProjectUserAssignment as pua where pua.user = ? and pua.project = p and p.status = ? ";
    <br>
    Ich vermute daher, dass Hibernate Probleme mit der one-to one Beziehung hat. Woran kann das liegen?

  • #2
    Hi Arno,

    Die Query sieht in Ordnung aus. Auch die Definition der Beziehung ist ok. Was für eine Exception wirft er denn beim Ausführen der Query?

    Welche id-Generatoren verwenden Project und ExtendedProject? Einer der beiden muß "foreign" verwenden, da Du ja primary-key-mapping für die Beziehung definierst. Die Beziehung zwischen ProjectUserAssignment und Project ist vermutlich many-to-one, oder?

    Gruß,

    Alwi

    Comment

    Working...
    X