2016-09-08 5 views
-1

に参加し、例外:インナーを使用して、私は以下のようなSQLクエリを持って休止状態

SELECT patient.*, 
contact.telephone 
from patient 
INNER JOIN contact ON patient.`idPatient` = contact.`idPatient` 

は、これらは私の作品、

Patient.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"> 
<!-- Generated Sep 8, 2016 1:55:08 PM by Hibernate Tools 4.3.1 --> 
<hibernate-mapping> 
    <class name="db.Patient" table="patient" catalog="example_hibernate" optimistic-lock="version"> 
     <id name="idPatient" type="java.lang.Integer"> 
      <column name="idPatient" /> 
      <generator class="identity" /> 
     </id> 
     <property name="title" type="string"> 
      <column name="title" length="45" /> 
     </property> 
     <property name="firstName" type="string"> 
      <column name="firstName" length="45" /> 
     </property> 
     <property name="lastName" type="string"> 
      <column name="lastName" length="45" /> 
     </property> 
     <property name="middleName" type="string"> 
      <column name="middleName" length="45" /> 
     </property> 
     <property name="dob" type="date"> 
      <column name="dob" length="10" /> 
     </property> 
     <property name="martitalStatus" type="java.lang.Boolean"> 
      <column name="martitalStatus" /> 
     </property> 
     <property name="gender" type="string"> 
      <column name="gender" length="45" /> 
     </property> 
     <property name="nic" type="string"> 
      <column name="nic" length="45" /> 
     </property> 
     <property name="dateCreated" type="timestamp"> 
      <column name="dateCreated" length="19" /> 
     </property> 
     <property name="lastUpdated" type="timestamp"> 
      <column name="lastUpdated" length="19" not-null="true" /> 
     </property> 
     <set name="contacts" table="contact" inverse="true" lazy="true" fetch="select"> 
      <key> 
       <column name="idPatient" not-null="true" /> 
      </key> 
      <one-to-many class="db.Contact" /> 
     </set> 
    </class> 
</hibernate-mapping> 

接触しています.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"> 
<!-- Generated Sep 8, 2016 1:55:08 PM by Hibernate Tools 4.3.1 --> 
<hibernate-mapping> 
    <class name="db.Contact" table="contact" catalog="example_hibernate" optimistic-lock="version"> 
     <id name="idContact" type="java.lang.Integer"> 
      <column name="idContact" /> 
      <generator class="identity" /> 
     </id> 
     <many-to-one name="patient" class="db.Patient" fetch="select"> 
      <column name="idPatient" not-null="true" /> 
     </many-to-one> 
     <property name="telephone" type="string"> 
      <column name="telephone" length="45" /> 
     </property> 
     <property name="address" type="string"> 
      <column name="address" length="45" /> 
     </property> 
    </class> 
</hibernate-mapping> 

は、それから私は、以下のようなSQLの上で使用

SessionFactory sessionFactory = new HibernateUtil().getSessionFactory(); 
     Session session = sessionFactory.openSession(); 

     List<Object[]> africanContinents = session.createQuery(
       "SELECT patient.*,\n" 
       + "contact.telephone\n" 
       + "from patient\n" 
       + "INNER JOIN contact ON patient.`idPatient` = contact.`idPatient`") 
       .list(); 
HibernateUtil.shutdown(); 

しかし、これは私がこの例外を処理する方法についてのアイデアを持っていない例外

org.hibernate.QueryException: unexpected char: '`' [SELECT patient.*, 
contact.telephone 
from patient 
INNER JOIN contact ON patient.`idPatient` = contact.`idPatient`] 

次私を買いました。このSQLクエリが正しいためです。 この例外に関するアイデアはありますか?

答えて

1

createQueryのクエリは、HQLまたはJPQLで記述する必要があります。

だから、あなたは(「患者の内側からc.telephoneが入会して、選択したpのような」何かを)HQLにクエリを書き直すことができドキュメンテーションhere

を参照するか、またはあなたがsession.createSQLQueryを呼び出す代わりにして、SQLクエリを使用することができますsession.createQuery

希望します。 Sebastien

+0

ありがとうございます。私は私の誤りを見つけました。 – Barrier

関連する問題