2012-07-03 5 views
0

Я пытаюсь запустить мой HQL-запрос, но я застрял некоторое время и решил спросить здесь.hibernate Ошибка подключения HQL

Я продолжаю получать «Путь, ожидаемый для присоединения!».

Итак, у меня есть 2 таблицы, которые я бы хотел запросить, для которых у меня уже есть запрос SQL.

это мои XML отображения

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> 

это мои 2 классы Java

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; 
} 


@Override 
public String toString() { 
    return "Kamer{" + 
      "kamerid=" + kamerid + 
      ", hotelid=" + hotelid + 
      ", kamertypeid=" + kamertypeid + 
      ", status='" + status + '\'' + 
      '}'; 
} 
} 

и

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; 
} 

@Override 
public 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 + 
      '}'; 
} 
} 

и вот моя HQL часть

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

также здесь оригинальный SQL Query

 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; 

любая помощь приветствуется, спасибо заранее!

+1

что точная проблема? : S –

+0

Извините, полностью забыл упомянуть, что здесь уже поздно. Я продолжаю получать «Путь, ожидаемый для присоединения!». – user1497398

+1

трассировка стека с соответствующими источниками была бы полезной. Я думаю –

ответ

0

Я думаю, что Ваш запрос должен быть

String HQL_QUERY = "SELECT k FROM reservatie r right join Kamer k"; 

или

String HQL_QUERY = "SELECT k FROM reservatie r join Kamer k"; 
+0

, к сожалению, это не работает и дает ту же ошибку: это исключение в потоке «main» org.hibernate.hql.ast.QuerySyntaxException: путь, ожидаемый для соединения! [SELECT k FROM model.Kamer k LEFT JOIN reserveatie r с k.kamerid = r.kamerID] – user1497398

+0

спасибо, что запрос работает сейчас. Я изменил свое сопоставление xml. – user1497398