-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: persist() throwing PropertyAccessException
PostPosted: Wed Jun 13, 2012 2:47 pm 
Newbie

Joined: Wed Jun 13, 2012 2:43 pm
Posts: 1
I'm struggling with a simple hibernate application. (JBoss AS 7.1.1, Hibernate 4.0.1, MySQL 5.5)

My entity bean:

Code:
    @Entity
    public class User implements Serializable {

        @Id
       private Long userId;
   
       public Long getUserId() {
      return userId;
       }

       public void setUserId(Long userId) {
          this.userId = userId;
       }
    }



My persistence.xml:

Code:
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
   version="2.0">
   <persistence-unit name="users" transaction-type="JTA">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:jboss/datasources/myDS</jta-data-source>
      <jar-file>users.jar</jar-file>
      <class>de.test.users.entities.User</class>
      <properties>
         <property name="hibernate.hbm2ddl.auto" value="update" />
         <property name="hibernate.archive.autodetection" value="class" />
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
         <property name="hibernate.show_sql" value="true" />
      </properties>
   </persistence-unit>
</persistence>


My simple DAO bean:
Code:
    @Stateless
    public class UserManagerBean implements UserManager {

       @PersistenceContext(name = "users")
       private EntityManager em;

       public UserManagerBean() {
          // TODO Auto-generated constructor stub
       }

       @Override
       public void createUser() {
          User user = new User();
                user.setUserId(42L);
      em.persist(user);
      em.flush();
       }
    }


I'm invoking the createUser method by an EJB injection of UserManagerBean in a JSF backing bean. When the persist method is called, i get the following:


Code:
    javax.faces.el.EvaluationException: javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of de.test.users.entities.User.userId
   at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
   at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
   at javax.faces.component.UICommand.broadcast(UICommand.java:315)
   at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
   at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
   at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
   at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
   at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
   at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
   at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
   at java.lang.Thread.run(Thread.java:722)
    Caused by: javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of de.test.users.entities.User.userId
   at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:166)
   at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:230)
   at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304)
   at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:32)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
   at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165)
   at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:173)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
   at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:72)
   at de.test.users.service.UserManager$$$view1.createUser(Unknown Source)
   at de.test.users.User.createUser(User.java:17)
   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:601)
   at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
   at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
   at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:39)
   at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
   at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
   at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
   ... 25 more
    Caused by: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of de.test.users.entities.User.userId
   at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1361)
   at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1289)
   at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1295)
   at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:859)
   at org.jboss.as.jpa.container.AbstractEntityManager.persist(AbstractEntityManager.java:563)
   at de.test.users.service.UserManagerBean.createUser(UserManagerBean.java:31)
   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:601)
   at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374)
   at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:127)
   at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:135)
   at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
   at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:82)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
   at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)
   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
   at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228)
   ... 56 more
     Caused by: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of de.test.users.entities.User.userId
   at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:61)
   at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:341)
   at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:4260)
   at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3982)
   at org.hibernate.engine.internal.ForeignKeys.isTransient(ForeignKeys.java:209)
   at org.hibernate.event.internal.AbstractSaveEventListener.getEntityState(AbstractSaveEventListener.java:509)
   at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:118)
   at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:78)
   at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:725)
   at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:701)
   at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:705)
   at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:853)
   ... 84 more
     Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field de.test.users.entities.User.userId to de.test.users.entities.User
   at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
   at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
   at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55)
   at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)
   at java.lang.reflect.Field.get(Field.java:372)
   at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:58)
   ... 95 more


Any idea how I could resolve this?
BTW, it seems that hibernate is not able to detect the classes in the jar file automatically. When i remove the class element from persistence.xml, the log tells me that hibernate didn't load any entities for the "users" persistence unit.
Might that have something to do with the exception?

My project structure looks more or less like that:

Code:
    project-ear
    |-- lib
    |-- META-INF
    |   |
    |   |-- maven
    |   |-- persistence.xml
    |   |-- application.xml
    |
    |-- users.jar
    |
    |-- users.war


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
cron
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.