My configuration:
- AS: Weblogic 12 c
- Java 8
- Hibernate Core 5.0.5.Final
- Hibernate Envers 5.0.5.Final
I'm using the basic configuration for Hibernate Envers, and I can see my audit tables being populated properly and also my "revinfo" table when insert/update/delete.
The problem is when I'm consulting some Entity/Revision, the error occurs.
My query:
@PersistenceContext(unitName = "pu")
protected EntityManager em;
@SuppressWarnings("rawtypes")
public List<Object[]> list(Class classe){
AuditQuery query = getAuditReader().createQuery()
.forRevisionsOfEntity(classe, false, true);
//Error occurs here:
Number revision = (Number) query
.getSingleResult();
System.out.println(revision);
List<Object[]> list = null;
return list;
}
private AuditReader getAuditReader() {
AuditReader reader = AuditReaderFactory.get(em);
return reader;
}
Error:
javax.ejb.EJBException: EJB Exception: : org.hibernate.HibernateException: HHH000142: Javassist Enhancement failed: org.hibernate.envers.DefaultRevisionEntity
at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy(JavassistProxyFactory.java:130)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:666)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:4461)
at org.hibernate.event.internal.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:336)
at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:257)
at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:137)
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129)
at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)
at org.hibernate.type.EntityType.resolve(EntityType.java:424)
at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)
at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)
at org.hibernate.loader.Loader.processResultSet(Loader.java:972)
at org.hibernate.loader.Loader.doQuery(Loader.java:930)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336)
at org.hibernate.loader.Loader.doList(Loader.java:2611)
at org.hibernate.loader.Loader.doList(Loader.java:2594)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2423)
at org.hibernate.loader.Loader.list(Loader.java:2418)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:501)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:371)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1326)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:87)
Caused by: java.lang.ClassCastException: org.hibernate.envers.DefaultRevisionEntity_$$_javassist_153 cannot be cast to javassist.util.proxy.Proxy
at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy(JavassistProxyFactory.java:123)
... 129 more
at weblogic.ejb.container.internal.EJBRuntimeUtils.throwEJBException(EJBRuntimeUtils.java:88)
at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:503)
at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:446)
at weblogic.ejb.container.internal.BaseLocalObject.postInvoke1(BaseLocalObject.java:251)
at weblogic.ejb.container.internal.BaseLocalObject.__WL_postInvokeTxRetry(BaseLocalObject.java:204)
Truncated. see log file for complete stacktrace
Caused By: org.hibernate.HibernateException: HHH000142: Javassist Enhancement failed: org.hibernate.envers.DefaultRevisionEntity
at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy(JavassistProxyFactory.java:130)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:666)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:4461)
at org.hibernate.event.internal.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:336)
at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:257)
Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassCastException: org.hibernate.envers.DefaultRevisionEntity_$$_javassist_153 cannot be cast to javassist.util.proxy.Proxy
at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy(JavassistProxyFactory.java:123)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:666)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:4461)
at org.hibernate.event.internal.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:336)
at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:257)
Truncated. see log file for complete stacktrace
Edit: . I can see in Weblogic CAT that there are several lib conflicts (app lib vs weblogic lib), including javassist.
So I added this to the weblogic-application.xml in my ear:
<prefer-application-packages>
<package-name>antlr.*</package-name>
<package-name>javassist.*</package-name>
</prefer-application-packages>
And now I'm getting a new different exception, but now this occours when Weblogic is starting:
weblogic.management.DeploymentException: java.lang.ClassCastException: org.jboss.weld.security.Principal$1127466021$Proxy$_$$_Weld$Proxy$ cannot be cast to javassist.util.proxy.ProxyObject
at weblogic.application.internal.BaseDeployment.throwAppException(BaseDeployment.java:123)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:260)
at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:61)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassCastException: org.jboss.weld.security.Principal$1127466021$Proxy$_$$_Weld$Proxy$ cannot be cast to javassist.util.proxy.ProxyObject
at org.jboss.weld.bean.proxy.ProxyFactory.create(ProxyFactory.java:249)
at org.jboss.weld.bean.builtin.ee.AbstractEEBean.<init>(AbstractEEBean.java:43)
at org.jboss.weld.bean.builtin.ee.PrincipalBean.<init>(PrincipalBean.java:52)
at org.jboss.weld.bootstrap.BeanDeployment.createBeans(BeanDeployment.java:193)
at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:349)
Truncated. see log file for complete stacktrace
Any idead of what's happening?