java - Unable to build EntityManagerFactory - error in table joining -


here jpacontext.xml:

<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans"     xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"     xmlns:tx="http://www.springframework.org/schema/tx"     xmlns:context="http://www.springframework.org/schema/context"     xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">     <context:annotation-config />     <context:component-scan base-package="com.pluralsight"/>      <bean         class="org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor">     </bean>     <bean id="entitymanagerfactory"         class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean">     <property name="persistenceunitname" value="punit"></property>     <property name="datasource" ref="datasource"></property>     <property name="jpavendoradapter">         <bean             class="org.springframework.orm.jpa.vendor.hibernatejpavendoradapter">         <property name="showsql" value="true"></property>         </bean>     </property>     <property name="jpapropertymap">         <map>             <entry key="hibernate.dialect"                 value="org.hibernate.dialect.mysql5innodbdialect">             </entry>             <entry key="hibernate.hbm2ddl.auto" value="none"></entry>             <entry key="hibernate.format_sql" value="true"></entry>         </map>     </property>     </bean>     <bean id="transactionmanager"         class="org.springframework.orm.jpa.jpatransactionmanager">         <property name="entitymanagerfactory"             ref="entitymanagerfactory">         </property>     </bean>     <tx:annotation-driven transaction-manager="transactionmanager" />     <bean id="datasource"         class="org.springframework.jdbc.datasource.drivermanagerdatasource">         <property name="driverclassname"             value="com.microsoft.sqlserver.jdbc.sqlserverdriver">         </property>         <property name="url"             value="jdbc:sqlserver://123.123.123.123:1433;databasename=wikigenome">         </property>         <property name="username" value="xxx"></property>         <property name="password" value="xxx"></property>     </bean> </beans> 

here disease.java:

@entity @table(name="disease") public class disease {   @id   @generatedvalue   @column(name="diseaseid")   public int diseaseid;    @column(name="name")   public string name; } 

here class:

@entity @table(name="chrposdisease") public class chrposdisease implements serializable{     @id     @column(name="chr")     public string chr;      @id     @column(name="pos")     public int pos;      @id     @column(name="diseaseid")     public int diseaseid; } 

i new hibernate , spring mvc framework , follows guide in tutorials. can query result using:

@suppresswarnings({ "unchecked"})     public list getdiseasebyname(string name) {         query query = em.createquery("select d disease d d.name=?1").setparameter(1,name);         list diseaselist=query.getresultlist();         return diseaselist;     } 

however, when join 2 table diseaseid, gives following error.

java.lang.illegalargumentexception: org.hibernate.hql.internal.ast.querysyntaxexception: path expected join! [select d cuhk.cse.fyp.model.disease d join chrposdisease c d.diseaseid=c.diseaseid , d.name=?1]  

i don't got error when querying result 1 table only.

here code used join 2 table:

@suppresswarnings({ "unchecked"})     public list getjoindiseasebyname(string name) {         query query = em.createquery("select d disease d join chrposdisease c d.diseaseid=c.diseaseid , d.name=?1").setparameter(1,name);         list diseaselist=query.getresultlist();         return diseaselist;     } 

what's wrong?

thanks help.

supplementary: updated chrposdisease

@suppresswarnings("serial") @entity @table(name="chrposdisease") public class chrposdisease implements serializable{     @id     @column(name="chr")     public string chr;      @id     @column(name="pos")     public int pos;      @column(name="diseaseid")     public int diseaseid;      @manytoone(fetch = fetchtype.lazy)     @joincolumn(name="diseaseid",nullable=false)     private disease disease; } 

updated disease:

@suppresswarnings("serial") @entity @table(name="disease") public class disease implements serializable{     @id     @generatedvalue     @column(name="diseaseid")     public int diseaseid;      @column(name="name")     public string name;      @onetomany(fetch = fetchtype.lazy, mappedby = "chrposdisease")     private set<chrposdisease> chrposdisease = new hashset<chrposdisease>(); } 

i used above entity , there exception in deploying.

do need add else?

i think should not use d.chrposdisease instead use chrposdisease d alias disease entity.

and should work.

let me know if doesn't work.


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -