java - SQLGrammarException for a table with embeddable primary key -


i created 2 tables, bank , branches.

i created dao/bo classes , interfaces both pojo.

i mapped them using annotations.

i'm using hibernate , spring.

i tested findall method on bank table...

public list<bank> findall() {     return gethibernatetemplate().find("from bank"); } 

...and successful.

the id of bank table, consists - alongside id of branch table - primary key of branch table.

so made embeddable class :

@embeddable public class branchpk implements serializable {      /**      *       */     private static final long serialversionuid = -8721469933759558600l;     private integer brchnum;     private integer banknum;      public branchpk() {      }     @column(name="brchnum", precision=3, scale=0)     public integer getbrchnum() {         return this.brchnum;     }     @column(name="banknum", precision=3, scale=0)     public integer getbanknum() {         return this.banknum;     }      public void setbrchnum(integer brchnum) {         this.brchnum = brchnum;     }       public void setbanknum(integer banknum) {         this.banknum = banknum;     }   } 

the branch table represented :

@entity @table(name="branch") public class branch implements serializable {      /**      *       */     private static final long serialversionuid = 9075916046034338274l;     @embeddedid     private branchpk primarykey;     @manytoone(fetch=fetchtype.lazy) @joincolumn(name="banknum")     private bank bank; ......... 

everything seems , in order, when repeat previous findall method fetch branches

public list<branch> findall() {     return gethibernatetemplate().find("from branch"); } 

i received error:

could not execute query; nested exception org.hibernate.exception.sqlgrammarexception: not execute query

update

tests run: 2, failures: 0, errors: 1, skipped: 0, time elapsed: 1.612 sec <<< failure! testfinddall(bdl.cdr.core.bankbankdaotest)  time elapsed: 0.19 sec  <<< error! org.springframework.dao.invaliddataaccessresourceusageexception: not execute query; nested exception org.hibernate.exception.sqlgrammarexception: not execute query     @ org.springframework.orm.hibernate3.sessionfactoryutils.converthibernateaccessexception(sessionfactoryutils.java:630)     @ org.springframework.orm.hibernate3.hibernateaccessor.converthibernateaccessexception(hibernateaccessor.java:412)     @ org.springframework.orm.hibernate3.hibernatetemplate.doexecute(hibernatetemplate.java:424)     @ org.springframework.orm.hibernate3.hibernatetemplate.executewithnativesession(hibernatetemplate.java:374)     @ org.springframework.orm.hibernate3.hibernatetemplate.find(hibernatetemplate.java:921)     @ org.springframework.orm.hibernate3.hibernatetemplate.find(hibernatetemplate.java:913)     @ bdl.cdr.core.dao.impl.bankbranchdaoimpl.findall(bankbranchdaoimpl.java:14)     @ bdl.cdr.core.bo.impl.bankbranchboimpl.findall(bankbranchboimpl.java:19)     @ bdl.cdr.core.bankbankdaotest.testfinddall(bankbankdaotest.java:26)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:606)     @ junit.framework.testcase.runtest(testcase.java:176)     @ junit.framework.testcase.runbare(testcase.java:141)     @ junit.framework.testresult$1.protect(testresult.java:122)     @ junit.framework.testresult.runprotected(testresult.java:142)     @ junit.framework.testresult.run(testresult.java:125)     @ junit.framework.testcase.run(testcase.java:129)     @ junit.framework.testsuite.runtest(testsuite.java:255)     @ junit.framework.testsuite.run(testsuite.java:250)     @ org.junit.internal.runners.junit38classrunner.run(junit38classrunner.java:84)     @ org.apache.maven.surefire.junit4.junit4testset.execute(junit4testset.java:53)     @ org.apache.maven.surefire.junit4.junit4provider.executetestset(junit4provider.java:123)     @ org.apache.maven.surefire.junit4.junit4provider.invoke(junit4provider.java:104)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:606)     @ org.apache.maven.surefire.util.reflectionutils.invokemethodwitharray(reflectionutils.java:164)     @ org.apache.maven.surefire.booter.providerfactory$providerproxy.invoke(providerfactory.java:110)     @ org.apache.maven.surefire.booter.surefirestarter.invokeprovider(surefirestarter.java:175)     @ org.apache.maven.surefire.booter.surefirestarter.runsuitesinprocesswhenforked(surefirestarter.java:107)     @ org.apache.maven.surefire.booter.forkedbooter.main(forkedbooter.java:68) caused by: org.hibernate.exception.sqlgrammarexception: not execute query     @ org.hibernate.exception.sqlstateconverter.convert(sqlstateconverter.java:92)     @ org.hibernate.exception.jdbcexceptionhelper.convert(jdbcexceptionhelper.java:66)     @ org.hibernate.loader.loader.dolist(loader.java:2545)     @ org.hibernate.loader.loader.listignorequerycache(loader.java:2276)     @ org.hibernate.loader.loader.list(loader.java:2271)     @ org.hibernate.loader.hql.queryloader.list(queryloader.java:459)     @ org.hibernate.hql.ast.querytranslatorimpl.list(querytranslatorimpl.java:365)     @ org.hibernate.engine.query.hqlqueryplan.performlist(hqlqueryplan.java:196)     @ org.hibernate.impl.sessionimpl.list(sessionimpl.java:1268)     @ org.hibernate.impl.queryimpl.list(queryimpl.java:102)     @ org.springframework.orm.hibernate3.hibernatetemplate$30.doinhibernate(hibernatetemplate.java:930)     @ org.springframework.orm.hibernate3.hibernatetemplate.doexecute(hibernatetemplate.java:419)     ... 31 more caused by: com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception: unknown column 'bankbranch0_.t_banknum' in 'field list'     @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method)     @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57)     @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45)     @ java.lang.reflect.constructor.newinstance(constructor.java:526)     @ com.mysql.jdbc.util.handlenewinstance(util.java:411)     @ com.mysql.jdbc.util.getinstance(util.java:386)     @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:1054)     @ com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:4237)     @ com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:4169)     @ com.mysql.jdbc.mysqlio.sendcommand(mysqlio.java:2617)     @ com.mysql.jdbc.mysqlio.sqlquerydirect(mysqlio.java:2778)     @ com.mysql.jdbc.connectionimpl.execsql(connectionimpl.java:2834)     @ com.mysql.jdbc.preparedstatement.executeinternal(preparedstatement.java:2156)     @ com.mysql.jdbc.preparedstatement.executequery(preparedstatement.java:2313)     @ org.hibernate.jdbc.abstractbatcher.getresultset(abstractbatcher.java:208)     @ org.hibernate.loader.loader.getresultset(loader.java:1953)     @ org.hibernate.loader.loader.doquery(loader.java:802)     @ org.hibernate.loader.loader.doqueryandinitializenonlazycollections(loader.java:274)     @ org.hibernate.loader.loader.dolist(loader.java:2542)     ... 40 more 

your error shows unknown column 'bankbranch0_.t_banknum' in 'field list' try find if table has t_banknum column in table. not there, remove mapping pojo.


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -