[Ehcache-List] "IllegalArgumentException occurred while calling setter"

Derek Mahar derek.mahar at gmail.com
Fri Sep 3 07:33:25 PDT 2010


What is the cause of the following IllegalArgumentException and how
can I prevent this exception?  It occurs after I enable RMI
replication for the User cache and no longer occurs after I disable
RMI replication.  Am I incorrectly mapping column `USER_RV` in table
`User` to class `Integer` instead of `BigDecimal` or some other
integer type?  (This seems unlikely since the same application maps
`NUMBER` columns in other tables to `Integer` objects, but Hibernate
**does not** throw this exception when populating an object with a row
from those tables.)

    Caused by: org.springframework.orm.hibernate3.HibernateSystemException:
IllegalArgumentException occurred while calling setter of
com.db.spgit.abstrack.model.User.rv; nested exception is
org.hibernate.PropertyAccessException: IllegalArgumentException
occurred while calling setter of com.db.spgit.abstrack.model.User.rv
    	at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:676)
    	at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
    	at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
    	at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
    	at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:1055)
    	at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:1048)
    	at com.db.abstrack.dao.hibernate.AbstrackDaoHibernate.findByCriteria(AbstrackDaoHibernate.java:57)
    	at com.db.abstrack.dao.hibernate.UserDaoHibernate.loadByName(UserDaoHibernate.java:63)
    	at com.db.spgit.abstrack.manager.QuoteManager.populateUser(QuoteManager.java:330)
    	at com.db.spgit.abstrack.manager.QuoteManager.populateOwnerUK(QuoteManager.java:307)
    	at com.db.spgit.abstrack.manager.QuoteManager.populateGuids(QuoteManager.java:254)
    	at com.db.spgit.abstrack.manager.QuoteManager.addQuoteReturnVwRfqUK(QuoteManager.java:429)
    	at com.db.spgit.abstrack.manager.QuoteManager$$FastClassByCGLIB$$d817accb.invoke(<generated>)
    	at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    	at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    	at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
    	at com.db.spgit.abstrack.manager.QuoteManager$$EnhancerByCGLIB$$cc8d0025.addQuoteReturnVwRfqUK(<generated>)
    	at com.db.abstrack.ejb.RfqBean.addRfqDraftListUK(RfqBean.java:370)
    	... 59 more
    Caused by: org.hibernate.PropertyAccessException:
IllegalArgumentException occurred while calling setter of
com.db.spgit.abstrack.model.User.rv
    	at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104)
    	at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337)
    	at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:200)
    	at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3514)
    	at org.hibernate.cache.entry.CacheEntry.assemble(CacheEntry.java:116)
    	at org.hibernate.cache.entry.CacheEntry.assemble(CacheEntry.java:82)
    	at org.hibernate.event.def.DefaultLoadEventListener.assembleCacheEntry(DefaultLoadEventListener.java:553)
    	at org.hibernate.event.def.DefaultLoadEventListener.loadFromSecondLevelCache(DefaultLoadEventListener.java:508)
    	at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:357)
    	at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139)
    	at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:179)
    	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
    	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
    	at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:846)
    	at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:557)
    	at org.hibernate.type.ManyToOneType.assemble(ManyToOneType.java:196)
    	at org.hibernate.cache.StandardQueryCache.get(StandardQueryCache.java:130)
    	at org.hibernate.loader.Loader.getResultFromQueryCache(Loader.java:2152)
    	at org.hibernate.loader.Loader.listUsingQueryCache(Loader.java:2117)
    	at org.hibernate.loader.Loader.list(Loader.java:2087)
    	at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:95)
    	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
    	at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
    	at org.springframework.orm.hibernate3.HibernateTemplate$36.doInHibernate(HibernateTemplate.java:1065)
    	at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
    	... 77 more
    Caused by: java.lang.IllegalArgumentException:
java.lang.ClassCastException at 6be0d6
    	at sun.reflect.GeneratedMethodAccessor104.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
    	... 101 more

Definition of class `User`:

    @Entity
    @Proxy(lazy=false)
    @Cache(usage=CacheConcurrencyStrategy.TRANSACTIONAL)
    @Table(name="TB_USER"
        ,schema="ABSOL_USER"
    )
    public class User  implements java.io.Serializable {
         private String id;
         private String userName;
         private Integer rv;

         public User() {
         }

         public User(String userName, Integer rv) {
            this.userName = userName;
            this.rv = rv;
         }

         @GenericGenerator(name="generator", strategy="guid")@Id
@GeneratedValue(generator="generator")

         @Column(name="USER_ID", unique=true, nullable=false)
         public String getId() {
             return this.id;
         }

         public void setId(String id) {
             this.id = id;
         }

         @Column(name="USER_NAME", nullable=false, length=20)
         public String getUserName() {
             return this.userName;
         }

         public void setUserName(String userName) {
             this.userName = userName;
         }

         @Column(name="USER_RV", precision=22, scale=0)
         public Integer getRv() {
             return this.rv;
         }

         public void setRv(Integer rv) {
             this.rv = rv;
         }
    }


Definition of table `TB_USER`:

      CREATE TABLE "ABSOL_OWNER"."TB_USER"
       (	"USER_ID" RAW(16) DEFAULT SYS_GUID(),
    	"USER_NAME" VARCHAR2(20 CHAR) NOT NULL ENABLE,
    	"USER_RV" NUMBER NOT NULL ENABLE,
    	 PRIMARY KEY ("USER_ID")
       )

Environment:

 - WebLogic Server 10.3.2
 - Oracle database
 - Hibernate 3.3.2.GA
 - Ehcache 2.2.0
 - Caching User objects
 - Enabled RMI cache replication via remote key invalidation

Thank you,

Derek


More information about the Ehcache-List mailing list