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
Post a Comment