hibernate HQL join error

ramireztango

New Member
I'm trying to get my HQL query working but I've been stuck for a while now and decided to ask here.I keep getting 'Path expected for join!'So i have 2 tables that I would like to Query which i already have the SQL query for.these are my xml mappings\[code\]Kamer.hbm.xml<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="model.Kamer" table="kamer"> <id name="kamerid"> <generator class="identity"/> </id> <property name="hotelid"/> <property name="kamertypeid" /> <property name="status" /></class></hibernate-mapping>Reservatie.hbm.xml<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="model.Reservatie" table="reservatie"> <id name="reservatieID"> <generator class="identity"/> </id> <property name="klantID"/> <property name="kamertypeID" /> <many-to-one name="kamerID" class="model.Kamer" /> <property name="hotelID" /> <property name="verblijfsformuleID" /> <property name="verblijfsperiodeID" /> <property name="betalingsID" /> <property name="gastID" /> <property name="kredietkaartID"/> <property name="start_datum" /> <property name="eind_datum" /> <property name="reservatie_datum" /> <property name="tijdige_annulatie" /> <property name="check_in_datum" /> <property name="check_uit_datum" /></class></hibernate-mapping>\[/code\]these are my 2 java classes\[code\]package model;public class Kamer {public int kamerid;public int hotelid;public int kamertypeid;public String status;public Kamer() {}public Kamer(int kamerid, int hotelid, int kamertypeid, String status) { this.kamerid = kamerid; this.hotelid = hotelid; this.kamertypeid = kamertypeid; this.status = status;}public String getStatus() { return status;}public void setStatus(String status) { this.status = status;}public int getKamerid() { return kamerid;}public void setKamerid(int kamerid) { this.kamerid = kamerid;}public int getHotelid() { return hotelid;}public void setHotelid(int hotelid) { this.hotelid = hotelid;}public int getKamertypeid() { return kamertypeid;}public void setKamertypeid(int kamertypeid) { this.kamertypeid = kamertypeid;}@Overridepublic String toString() { return "Kamer{" + "kamerid=" + kamerid + ", hotelid=" + hotelid + ", kamertypeid=" + kamertypeid + ", status='" + status + '\'' + '}';}}\[/code\]and\[code\]package model;import java.util.Date;public class Reservatie {public int reservatieID;public int klantID;public int kamertypeID;public int kamerID;public int hotelID;public int verblijfsformuleID;public int verblijfsperiodeID;public int betalingsID;public int gastID;public int kredietkaartID;public Date start_datum;public Date eind_datum;public Date reservatie_datum;public String tijdige_annulatie;public Date check_in_datum;public Date check_uit_datum;public Reservatie() { }public Reservatie(int reservatieID,int klantID, int kamertypeID, int kamerID, int hotelID, int verblijfsformuleID, int verblijfsperiodeID, int betalingsID, int gastID, int kredietkaartID, Date start_datum, Date eind_datum, Date reservatie_datum, String tijdige_annulatie, Date check_in_datum, Date check_uit_datum) { this.reservatieID = reservatieID; this.klantID = klantID; this.kamertypeID = kamertypeID; this.kamerID = kamerID; this.hotelID = hotelID; this.verblijfsformuleID = verblijfsformuleID; this.verblijfsperiodeID = verblijfsperiodeID; this.betalingsID = betalingsID; this.gastID = gastID; this.kredietkaartID = kredietkaartID; this.start_datum = start_datum; this.eind_datum = eind_datum; this.reservatie_datum = reservatie_datum; this.tijdige_annulatie = tijdige_annulatie; this.check_in_datum = check_in_datum; this.check_uit_datum = check_uit_datum;}public int getKlantID() { return klantID;}public void setKlantID(int klantID) { this.klantID = klantID;}public int getReservatieID() { return reservatieID;}public void setReservatieID(int reservatieID) { this.reservatieID = reservatieID;}public int getKamertypeID() { return kamertypeID;}public void setKamertypeID(int kamertypeID) { this.kamertypeID = kamertypeID;}public int getKamerID() { return kamerID;}public void setKamerID(int kamerID) { this.kamerID = kamerID;}public int getHotelID() { return hotelID;}public void setHotelID(int hotelID) { this.hotelID = hotelID;}public int getVerblijfsformuleID() { return verblijfsformuleID;}public void setVerblijfsformuleID(int verblijfsformuleID) { this.verblijfsformuleID = verblijfsformuleID;}public int getVerblijfsperiodeID() { return verblijfsperiodeID;}public void setVerblijfsperiodeID(int verblijfsperiodeID) { this.verblijfsperiodeID = verblijfsperiodeID;}public int getBetalingsID() { return betalingsID;}public void setBetalingsID(int betalingsID) { this.betalingsID = betalingsID;}public int getGastID() { return gastID;}public void setGastID(int gastID) { this.gastID = gastID;}public int getKredietkaartID() { return kredietkaartID;}public void setKredietkaartID(int kredietkaartID) { this.kredietkaartID = kredietkaartID;}public Date getStart_datum() { return start_datum;}public void setStart_datum(Date start_datum) { this.start_datum = start_datum;}public Date getEind_datum() { return eind_datum;}public void setEind_datum(Date eind_datum) { this.eind_datum = eind_datum;}public Date getReservatie_datum() { return reservatie_datum;}public void setReservatie_datum(Date reservatie_datum) { this.reservatie_datum = reservatie_datum;}public String getTijdige_annulatie() { return tijdige_annulatie;}public void setTijdige_annulatie(String tijdige_annulatie) { this.tijdige_annulatie = tijdige_annulatie;}public Date getCheck_in_datum() { return check_in_datum;}public void setCheck_in_datum(Date check_in_datum) { this.check_in_datum = check_in_datum;}public Date getCheck_uit_datum() { return check_uit_datum;}public void setCheck_uit_datum(Date check_uit_datum) { this.check_uit_datum = check_uit_datum;}@Overridepublic String toString() { return "Reservatie{" + "reservatieID=" + reservatieID + ", klantID=" + klantID + ", kamertypeID=" + kamertypeID + ", kamerID=" + kamerID + ", hotelID=" + hotelID + ", verblijfsformuleID=" + verblijfsformuleID + ", verblijfsperiodeID=" + verblijfsperiodeID + ", betalingsID=" + betalingsID + ", gastID=" + gastID + ", kredietkaartID=" + kredietkaartID + ", start_datum=" + start_datum + ", eind_datum=" + eind_datum + ", reservatie_datum=" + reservatie_datum + ", tijdige_annulatie='" + tijdige_annulatie + '\'' + ", check_in_datum=" + check_in_datum + ", check_uit_datum=" + check_uit_datum + '}';}}\[/code\]and here is my HQL part\[code\]import model.Reservatie;import org.hibernate.Query; import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import persistentie.HibernateUtil;import model.Kamer;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.List;@SuppressWarnings({"ALL"})public class testKamer {public static void main(String[] args) throws Exception{ SessionFactory factory = HibernateUtil.getSessionFactory(); Session session = factory.getCurrentSession(); Transaction tx = session.beginTransaction(); String HQL_QUERY = "SELECT k FROM Kamer k LEFT JOIN Reservatie r with k.kamerid = r.kamerID"; Query query = session.createQuery(HQL_QUERY); List result = query.list(); for(Iterator it = result.iterator();it.hasNext();) { Kamer kamer = (Kamer) it.next(); System.out.println("Kamer: "+kamer.kamerid); }}}\[/code\]also here is the original SQL Query\[code\] SELECT * FROM kamer LEFT JOIN reservatie ON kamer.kamerid=reservatie.kamerid and kamer.kamertypeid = reservatie.kamertypeid and kamer.hotelid = reservatie.hotelid where not reservatie.verblijfsperiodeid = 2 or reservatie.kamerid is null;\[/code\]any help is welcome, thanks in advance!
 
Top