aspose file tools*
The moose likes Object Relational Mapping and the fly likes User Registration Problem with JPA Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "User Registration Problem with JPA" Watch "User Registration Problem with JPA" New topic
Author

User Registration Problem with JPA

Raj Bansilal Champaneriya
Ranch Hand

Joined: Dec 17, 2011
Posts: 36

Hello guys,

I am facing problem with JPA. I have a problem where I need to insert new user and setup its relationship with user at the same time.

==> Database Design is as following:

* SystemUsers:

UserName(pk)
Password

* SystemClassifiedGroups:

SystemClassifiedGroupName
UserName


==> I have written following logic in EJB

@Override
public void addUser(SYSTEM_CLASSIFIED_USER_GROUPS systemClassifiedUserGroup,
String userName,
String password,
String emailID,
String secretQuestion,
String secretAnswer,
String firstName,
String lastName,
String profilePictureURL,
Date birthDate,
String address1,
String address2,
String cityName,
String zipCode,
short stateID,
short countryID,
String officePhoneNumber) {

FeedBack objFeedBack = null;
String methodName = CLASS_NAME + ".addUser";

try {

SystemUsers objSystemUser=new SystemUsers(userName, password, emailID, firstName, lastName, address1, cityName);
SystemClassifiedUserGroups tempGrp=new SystemClassifiedUserGroups(systemClassifiedUserGroup.name());

States objState = new States(stateID);
Countries objCountry = new Countries(countryID);
objSystemUser.setSecretQuestion(secretQuestion);
objSystemUser.setSecretAnswer(secretAnswer);
objSystemUser.setProfilePictureURL(profilePictureURL);
objSystemUser.setBirthDate(birthDate);
objSystemUser.setAddress2(address2);
objSystemUser.setStateID(objState);
objSystemUser.setCountryID(objCountry);
objSystemUser.setOfficePhoneNumber(officePhoneNumber);
objSystemUser.setZipCode(zipCode);

ArrayList<SystemUsers> lstUser = new ArrayList<SystemUsers>();
lstUser.add(objSystemUser);
tempGrp.setUserName(objSystemUser);
tempGrp.setSystemClassifiedGroupName(systemClassifiedUserGroup.name());

em.persist(tempGrp);

em.persist(objSystemUser);

} catch (Exception ex) {

ex.printStackTrace();
}
}


==> And call the method by following :

asr.addUser(SYSTEM_CLASSIFIED_USER_GROUPS.ADMIN,
"raj",
"pass",
"abc@yahoo.com",
"Color",
"purple",
"Raj",
"Champaneriya",
"abj.jpg",
new Date(),
"jolly1",
"jolly2",
"surat",
"395007",
(short) 1,
(short) 1,
"3201708");


==> But I got following Exception in glassfish console

SEVERE: java.lang.IllegalArgumentException: Object: BusinessFacade.Entities.SystemUsers[ userName=raj ] is not a known entity type.
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4158)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:440)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.persist(EntityManagerWrapper.java:269)
at BusinessFacade.User.UserServices.addUser(UserServices.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5366)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
at sun.reflect.GeneratedMethodAccessor119.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370)
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5338)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5326)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
at $Proxy273.addUser(Unknown Source)
at BusinessFacade.AdminServices.addUser(AdminServices.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5366)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
at sun.reflect.GeneratedMethodAccessor119.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370)
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5338)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5326)
at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:206)
at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:79)
at $Proxy271.addUser(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:241)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152)
at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:227)
at BusinessFacade.__AdminServicesRemote_Remote_DynamicStub.addUser(BusinessFacade/__AdminServicesRemote_Remote_DynamicStub.java)
at BusinessFacade._AdminServicesRemote_Wrapper.addUser(BusinessFacade/_AdminServicesRemote_Wrapper.java)
at Admin.TestServlet.processRequest(TestServlet.java:35)
at Admin.TestServlet.doGet(TestServlet.java:74)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:636)

Thanks in advance
James Sutherland
Ranch Hand

Joined: Oct 01, 2007
Posts: 553
There error means that you did not map, BusinessFacade.Entities.SystemUsers

Ensure you put this class in your persistence.xml and have an @Entity on it.

(note that packages in java should be lowercase, and your class should be called SystemUser)


TopLink : EclipseLink : Book:Java Persistence : Blog:Java Persistence Performance
Raj Bansilal Champaneriya
Ranch Hand

Joined: Dec 17, 2011
Posts: 36

Thanks for reply,

I don't know how to put class in persistence.xml could you please explain.
And I have generated entities in Netbeans from database so they are already annotated with @Entity
James Sutherland
Ranch Hand

Joined: Oct 01, 2007
Posts: 553
The JPa persistence.xml defines a <class> element to specify the classes in the persistence unit. If the classes are packaged in the same jar as the persistence.xml in Java EE, they should also be found, or if <exclude-unlisted-classes>false</exclude-unlisted-classes> is used in Java SE. Perhaps include your persistence.xml

There is also a possibility of a class loader issues, such as if you are redeploying to a live server. Try restarting the server.

See,
http://en.wikibooks.org/wiki/Java_Persistence/Runtime
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: User Registration Problem with JPA