java - Hibernate QuerySyntaxException when using annotations for mapping -


i have database table named user , model class named user annotated @entity using javax.persistence. when try query user following exception:

severe: servlet.service() servlet [jersey web application] in context path [/myapp] threw exception [java.lang.illegalargumentexception: org.hibernate.hql.internal.ast.querysyntaxexception: user not mapped [from user u u.username = :username]] root cause org.hibernate.hql.internal.ast.querysyntaxexception: user not mapped     @ org.hibernate.hql.internal.ast.util.sessionfactoryhelper.requireclasspersister(sessionfactoryhelper.java:171)     @ org.hibernate.hql.internal.ast.tree.fromelementfactory.addfromelement(fromelementfactory.java:91)     @ org.hibernate.hql.internal.ast.tree.fromclause.addfromelement(fromclause.java:79)     @ org.hibernate.hql.internal.ast.hqlsqlwalker.createfromelement(hqlsqlwalker.java:324)     @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.fromelement(hqlsqlbasewalker.java:3696)     @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.fromelementlist(hqlsqlbasewalker.java:3585)     @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.fromclause(hqlsqlbasewalker.java:720)     @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.query(hqlsqlbasewalker.java:576)     @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.selectstatement(hqlsqlbasewalker.java:313)     @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.statement(hqlsqlbasewalker.java:261)     @ org.hibernate.hql.internal.ast.querytranslatorimpl.analyze(querytranslatorimpl.java:266)     @ org.hibernate.hql.internal.ast.querytranslatorimpl.docompile(querytranslatorimpl.java:189)     @ org.hibernate.hql.internal.ast.querytranslatorimpl.compile(querytranslatorimpl.java:141)     @ org.hibernate.engine.query.spi.hqlqueryplan.<init>(hqlqueryplan.java:115)     @ org.hibernate.engine.query.spi.hqlqueryplan.<init>(hqlqueryplan.java:77)     @ org.hibernate.engine.query.spi.queryplancache.gethqlqueryplan(queryplancache.java:153)     @ org.hibernate.internal.abstractsharedsessioncontract.getqueryplan(abstractsharedsessioncontract.java:546)     @ org.hibernate.internal.abstractsharedsessioncontract.createquery(abstractsharedsessioncontract.java:655)     @ org.hibernate.internal.abstractsharedsessioncontract.createquery(abstractsharedsessioncontract.java:679)     @ org.hibernate.internal.abstractsharedsessioncontract.createquery(abstractsharedsessioncontract.java:102)     @ com.xxxxxxx.myapp.myapp.sevice.userservice.getuser(userservice.java:32)     @ com.xxxxxxx.myapp.myapp.resources.userresource.getuser(userresource.java:23)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:498)     @ org.glassfish.jersey.server.model.internal.resourcemethodinvocationhandlerfactory$1.invoke(resourcemethodinvocationhandlerfactory.java:81)     @ org.glassfish.jersey.server.model.internal.abstractjavaresourcemethoddispatcher$1.run(abstractjavaresourcemethoddispatcher.java:144)     @ org.glassfish.jersey.server.model.internal.abstractjavaresourcemethoddispatcher.invoke(abstractjavaresourcemethoddispatcher.java:161)     @ org.glassfish.jersey.server.model.internal.javaresourcemethoddispatcherprovider$typeoutinvoker.dodispatch(javaresourcemethoddispatcherprovider.java:205)     @ org.glassfish.jersey.server.model.internal.abstractjavaresourcemethoddispatcher.dispatch(abstractjavaresourcemethoddispatcher.java:99)     @ org.glassfish.jersey.server.model.resourcemethodinvoker.invoke(resourcemethodinvoker.java:389)     @ org.glassfish.jersey.server.model.resourcemethodinvoker.apply(resourcemethodinvoker.java:347)     @ org.glassfish.jersey.server.model.resourcemethodinvoker.apply(resourcemethodinvoker.java:102)     @ org.glassfish.jersey.server.serverruntime$2.run(serverruntime.java:326)     @ org.glassfish.jersey.internal.errors$1.call(errors.java:271)     @ org.glassfish.jersey.internal.errors$1.call(errors.java:267)     @ org.glassfish.jersey.internal.errors.process(errors.java:315)     @ org.glassfish.jersey.internal.errors.process(errors.java:297)     @ org.glassfish.jersey.internal.errors.process(errors.java:267)     @ org.glassfish.jersey.process.internal.requestscope.runinscope(requestscope.java:317)     @ org.glassfish.jersey.server.serverruntime.process(serverruntime.java:305)     @ org.glassfish.jersey.server.applicationhandler.handle(applicationhandler.java:1154)     @ org.glassfish.jersey.servlet.webcomponent.serviceimpl(webcomponent.java:473)     @ org.glassfish.jersey.servlet.webcomponent.service(webcomponent.java:427)     @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:388)     @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:341)     @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:228)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:231)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:166)     @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:193)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:166)     @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:198)     @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:96)     @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:478)     @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:140)     @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:80)     @ org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:624)     @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:87)     @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:342)     @ org.apache.coyote.http11.http11processor.service(http11processor.java:799)     @ org.apache.coyote.abstractprocessorlight.process(abstractprocessorlight.java:66)     @ org.apache.coyote.abstractprotocol$connectionhandler.process(abstractprotocol.java:861)     @ org.apache.tomcat.util.net.nioendpoint$socketprocessor.dorun(nioendpoint.java:1455)     @ org.apache.tomcat.util.net.socketprocessorbase.run(socketprocessorbase.java:49)     @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142)     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617)     @ org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)     @ java.lang.thread.run(thread.java:748)  aug 20, 2017 5:29:58 pm org.apache.catalina.core.standardcontext reload info: reloading context name [/myapp] has started aug 20, 2017 5:29:58 pm org.apache.catalina.loader.webappclassloaderbase clearreferencesjdbc warning: web application [myapp] registered jdbc driver [org.postgresql.driver] failed unregister when web application stopped. prevent memory leak, jdbc driver has been forcibly unregistered. aug 20, 2017 5:29:58 pm org.apache.catalina.loader.webappclassloaderbase clearreferencesthreads warning: web application [myapp] appears have started thread named [pool-2-thread-1] has failed stop it. create memory leak. stack trace of thread:  sun.misc.unsafe.park(native method)  java.util.concurrent.locks.locksupport.parknanos(locksupport.java:215)  java.util.concurrent.locks.abstractqueuedsynchronizer$conditionobject.awaitnanos(abstractqueuedsynchronizer.java:2078)  java.util.concurrent.scheduledthreadpoolexecutor$delayedworkqueue.take(scheduledthreadpoolexecutor.java:1093)  java.util.concurrent.scheduledthreadpoolexecutor$delayedworkqueue.take(scheduledthreadpoolexecutor.java:809)  java.util.concurrent.threadpoolexecutor.gettask(threadpoolexecutor.java:1067)  java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1127)  java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617)  java.lang.thread.run(thread.java:748) 

my query in service class called userservice.java below:

import javax.persistence.typedquery;  import org.hibernate.hibernateexception; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.configuration;  import com.xxxxxx.model.user;  public class userservice {      private static sessionfactory factory;      public userservice() {     }      public user getuser(string username) {         try{             factory = new configuration().configure().buildsessionfactory();         } catch (throwable ex) {              system.err.println("failed create sessionfactory object." + ex);             throw new exceptionininitializererror(ex);          }         session session = factory.opensession();         transaction tx = null;         user user = null;         try {             tx = session.begintransaction();             typedquery<user> query = session.createquery("from user u u.username = :username", user.class).setparameter("username", username);             user = query.getsingleresult();         } catch(hibernateexception e) {             if (tx != null) {                 tx.rollback();             }             e.printstacktrace();         } {             session.close();         }         return user;     }  } 

my model class below:

import javax.persistence.*;  @entity @table(name="user") public class user {      @id @generatedvalue     @column(name="id")     private long id;      @column(name="username", unique=true)     private string username;      @column(name="email")     private string email;      @column(name="created")     private timestamp created;      public user(long id, string username, string email) {         this.id = id;         this.username = username;         this.email = email;     } } 

for people had same issue seems using table name instead of entity name. however, in case, think i'm using correct entity name. tried removing arguments , body of constructor of user didn't help.

for clarity, below hibernate.cfg.xml:

<hibernate-configuration>     <session-factory>          <!-- connection settings -->         <property name="hibernate.connection.driver_class">org.postgresql.driver</property>         <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/myapp</property>         <property name="hibernate.connection.username">admin</property>         <property name="hibernate.connection.password">xxxxx</property>          <!-- sql dialect -->         <property name="hibernate.dialect">org.hibernate.dialect.postgresqldialect</property>          <!-- mapping files -->           <!-- dev config - remove @ prod -->         <property name="hibernate.hbm2ddl.auto">update</property>      </session-factory> </hibernate-configuration> 

for reason, annotation not being processed. either need create mapping file , include in config, https://www.tutorialspoint.com/hibernate/hibernate_mapping_files.htm or long remember there way specify annotation configuration during hibernate session creation specify annotated entities. missing part. please, check reference add annotated class in hibernate adding classes in package. java


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -