i trying user based on id using named query, keep getting illegal argument exception. i've been looking @ code awhile. may catch might've missed. orm
@entity @table(name = "myuser") @xmlrootelement @namedqueries({ @namedquery(name = "myuser.findall", query = "select m myuser m"), @namedquery(name = "myuser.findbyuserid", query = "select m myuser m m.userid = :userid"), @namedquery(name = "myuser.findbyname", query = "select m myuser m m.name = :name"), @namedquery(name = "myuser.findbypassword", query = "select m myuser m m.password = :password"), @namedquery(name = "myuser.findbyemail", query = "select m myuser m m.email = :email"), @namedquery(name = "myuser.findbytel", query = "select m myuser m m.tel = :tel"), @namedquery(name = "myuser.findbyaddress", query = "select m myuser m m.address = :address"), @namedquery(name = "myuser.findbysecqn", query = "select m myuser m m.secqn = :secqn"), @namedquery(name = "myuser.findbysecans", query = "select m myuser m m.secans = :secans")}) public class myuser implements serializable { private static final long serialversionuid = 1l; @id @basic(optional = false) @column(name = "userid") private integer userid; @column(name = "name") private string name; @column(name = "password") private string password; @column(name = "email") private string email; @column(name = "tel") private integer tel; @column(name = "address") private string address; @column(name = "secqn") private string secqn; @column(name = "secans") private string secans; public myuser() { } public myuser(integer userid) { this.userid = userid; } public integer getuserid() { return userid; } public void setuserid(integer userid) { this.userid = userid; } public string getname() { return name; } public void setname(string name) { this.name = name; } public string getpassword() { return password; } public void setpassword(string password) { this.password = password; } public string getemail() { return email; } public void setemail(string email) { this.email = email; } public integer gettel() { return tel; } public void settel(integer tel) { this.tel = tel; } public string getaddress() { return address; } public void setaddress(string address) { this.address = address; } public string getsecqn() { return secqn; } public void setsecqn(string secqn) { this.secqn = secqn; } public string getsecans() { return secans; } public void setsecans(string secans) { this.secans = secans; } @override public int hashcode() { int hash = 0; hash += (userid != null ? userid.hashcode() : 0); return hash; } @override public boolean equals(object object) { // todo: warning - method won't work in case id fields not set if (!(object instanceof myuser)) { return false; } myuser other = (myuser) object; if ((this.userid == null && other.userid != null) || (this.userid != null && !this.userid.equals(other.userid))) { return false; } return true; } @override public string tostring() { return "ejbentity.myuser[ userid=" + userid + " ]"; } }
this user facade
@stateless public class myuserfacade implements myuserfacaderemote { @persistencecontext(unitname = "ejbserver-ejbpu") private entitymanager em; protected entitymanager getentitymanager() { return em; } public myuserfacade() { //super(myuser.class); } @override public myuser getuser(int userid) { myuser auser = new myuser(); auser = (myuser)em.createnamedquery("myuser.findbyuserid").setparameter("userid", userid).getresultlist(); return auser; } }
my persistence.xml
<?xml version="1.0" encoding="utf-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="ejbentitypu" transaction-type="resource_local"> <provider>org.eclipse.persistence.jpa.persistenceprovider</provider> <!--<exclude-unlisted-classes>false</exclude-unlisted-classes>--> <class>ejbentity.myuser</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/ea"/> <property name="javax.persistence.jdbc.password" value="test"/> <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.clientdriver"/> <property name="javax.persistence.jdbc.user" value="test"/> </properties> </persistence-unit> </persistence>
error log given below:
java.lang.reflect.invocationtargetexception @ 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.glassfish.appclient.client.acc.appclientcontainer.launch(appclientcontainer.java:446) @ org.glassfish.appclient.client.appclientfacade.main(appclientfacade.java:166) caused by: javax.ejb.ejbexception @ com.sun.ejb.containers.ejbcontainertransactionmanager.processsystemexception(ejbcontainertransactionmanager.java:752) @ com.sun.ejb.containers.ejbcontainertransactionmanager.completenewtx(ejbcontainertransactionmanager.java:702) @ com.sun.ejb.containers.ejbcontainertransactionmanager.postinvoketx(ejbcontainertransactionmanager.java:507) @ com.sun.ejb.containers.basecontainer.postinvoketx(basecontainer.java:4566) @ com.sun.ejb.containers.basecontainer.postinvoke(basecontainer.java:2074) @ com.sun.ejb.containers.basecontainer.postinvoke(basecontainer.java:2044) @ com.sun.ejb.containers.ejbobjectinvocationhandler.invoke(ejbobjectinvocationhandler.java:212) @ com.sun.ejb.containers.ejbobjectinvocationhandlerdelegate.invoke(ejbobjectinvocationhandlerdelegate.java:79) @ com.sun.proxy.$proxy266.getuser(unknown source) @ 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) @ com.sun.corba.ee.impl.presentation.rmi.reflectivetie.dispatchtomethod(reflectivetie.java:143) @ com.sun.corba.ee.impl.presentation.rmi.reflectivetie._invoke(reflectivetie.java:173) @ com.sun.corba.ee.impl.protocol.serverrequestdispatcherimpl.dispatchtoservant(serverrequestdispatcherimpl.java:528) @ com.sun.corba.ee.impl.protocol.serverrequestdispatcherimpl.dispatch(serverrequestdispatcherimpl.java:199) @ com.sun.corba.ee.impl.protocol.messagemediatorimpl.handlerequestrequest(messagemediatorimpl.java:1549) @ com.sun.corba.ee.impl.protocol.messagemediatorimpl.handlerequest(messagemediatorimpl.java:1425) @ com.sun.corba.ee.impl.protocol.messagemediatorimpl.handleinput(messagemediatorimpl.java:930) @ com.sun.corba.ee.impl.protocol.giopmsgheaders.requestmessage_1_2.callback(requestmessage_1_2.java:213) @ com.sun.corba.ee.impl.protocol.messagemediatorimpl.handlerequest(messagemediatorimpl.java:694) @ com.sun.corba.ee.impl.protocol.messagemediatorimpl.dispatch(messagemediatorimpl.java:496) @ com.sun.corba.ee.impl.protocol.messagemediatorimpl.dowork(messagemediatorimpl.java:2222) @ com.sun.corba.ee.impl.threadpool.threadpoolimpl$workerthread.performwork(threadpoolimpl.java:497) @ com.sun.corba.ee.impl.threadpool.threadpoolimpl$workerthread.run(threadpoolimpl.java:540) caused by: java.lang.illegalargumentexception: namedquery of name: myuser.findbyuserid not found. @ org.eclipse.persistence.internal.jpa.queryimpl.getdatabasequeryinternal(queryimpl.java:355) @ org.eclipse.persistence.internal.jpa.entitymanagerimpl.createnamedquery(entitymanagerimpl.java:1135) @ com.sun.enterprise.container.common.impl.entitymanagerwrapper.createnamedquery(entitymanagerwrapper.java:522) @ stateless.myuserfacade.getuser(myuserfacade.java:62) @ 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.glassfish.ejb.security.application.ejbsecuritymanager.runmethod(ejbsecuritymanager.java:1081) @ org.glassfish.ejb.security.application.ejbsecuritymanager.invoke(ejbsecuritymanager.java:1153) @ com.sun.ejb.containers.basecontainer.invokebeanmethod(basecontainer.java:4786) @ com.sun.ejb.ejbinvocation.invokebeanmethod(ejbinvocation.java:656) @ com.sun.ejb.containers.interceptors.aroundinvokechainimpl.invokenext(interceptormanager.java:822) @ com.sun.ejb.ejbinvocation.proceed(ejbinvocation.java:608) @ org.jboss.weld.ejb.abstractejbrequestscopeactivationinterceptor.aroundinvoke(abstractejbrequestscopeactivationinterceptor.java:73) @ org.jboss.weld.ejb.sessionbeaninterceptor.aroundinvoke(sessionbeaninterceptor.java:52) @ 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) @ com.sun.ejb.containers.interceptors.aroundinvokeinterceptor.intercept(interceptormanager.java:883) @ com.sun.ejb.containers.interceptors.aroundinvokechainimpl.invokenext(interceptormanager.java:822) @ com.sun.ejb.ejbinvocation.proceed(ejbinvocation.java:608) @ com.sun.ejb.containers.interceptors.systeminterceptorproxy.docall(systeminterceptorproxy.java:163) @ com.sun.ejb.containers.interceptors.systeminterceptorproxy.aroundinvoke(systeminterceptorproxy.java:140) @ 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) @ com.sun.ejb.containers.interceptors.aroundinvokeinterceptor.intercept(interceptormanager.java:883) @ com.sun.ejb.containers.interceptors.aroundinvokechainimpl.invokenext(interceptormanager.java:822) @ com.sun.ejb.containers.interceptors.interceptormanager.intercept(interceptormanager.java:369) @ com.sun.ejb.containers.basecontainer.__intercept(basecontainer.java:4758) @ com.sun.ejb.containers.basecontainer.intercept(basecontainer.java:4746) @ com.sun.ejb.containers.ejbobjectinvocationhandler.invoke(ejbobjectinvocationhandler.java:205) ... 19 more java result: 1
i notice have class ejbentity.myuser in persistence.xml. class lives in package structure consisting of 1 directory called "ejbentity"? stacktrace suggests myuser class namedquery annotations not being found, explained if package structure not being loaded expect.
Comments
Post a Comment