- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的配置:
我正在使用 Hibernate Envers 的基本配置,我可以看到我的审核表已正确填充,并且在插入/更新/删除时也可以看到我的“revinfo”表。
问题是当我咨询某些实体/修订时,会发生错误。
我的查询:
@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;
}
错误:
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
编辑:。我可以在 Weblogic CAT 中看到存在多个库冲突(app lib 与 weblogic lib),包括 javassist。
所以我将其添加到我耳中的 weblogic-application.xml 中:
<prefer-application-packages>
<package-name>antlr.*</package-name>
<package-name>javassist.*</package-name>
</prefer-application-packages>
现在我遇到了一个新的不同异常,但是现在当 Weblogic 启动时会发生这种情况:
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
知道发生了什么吗?
最佳答案
我首先要确保类路径上有正确版本的 Javassist,并且不会意外地拥有多个版本。过去当我遇到版本冲突时,我也遇到过类似的问题。
对于 Hibernate 5.0.5,它将是 javassist-3.18.1-GA.jar。
这是我的审核历史存储库实现的示例,它返回按给定实体类型的修订号排序的实体修订列表,并作为引用的实体标识符。
public class AuditHistoryRepository<T, ID extends Serializable> {
@PersistenceContext
private EntityManager entityManager;
private Class<T> entityClazz;
public List<T> getEntityRevisionsById(ID id) {
List<T> results = new ArrayList<>();
// read audit history
AuditReader reader = AuditReaderFactory.get(entityManager);
AuditQuery query = reader.createQuery()
.forRevisionsOfEntity(entityClazz, false, true)
.add(AuditEntity.id().eq(id))
.addOrder(AuditEntity.revisionNumber().asc());
// get results
for(Object row : query.getResultList()) {
if(row instanceof Object[]) {
Object[] array = (Object[])row;
T entity = (T) array[0];
results.add(entity);
}
}
return results;
}
}
关于java - Hibernate Envers - DefaultRevisionEntity 无法转换为 javassist.util.proxy.Proxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34232302/
Hibernate Envers 是否可以将另一个数据库用于审计表? 最佳答案 您可以使用不同的架构/目录。见 org.hibernate.envers.default_schema和 org.hib
我在我的应用程序中使用 Hibernate Envers 来存储审计跟踪数据,所有与审计相关的信息都正确存储在 *_AUD 表中。但是,所有_AUD表中rev列的数据类型都是Integer数据类型。我
我是 hibernate envers 的新手。我已经成功地为每个实体创建了审计表。但是我不知道如何为每个实体读取这些历史记录。我想在 jsp 中显示这个历史记录。我想阅读所有的历史记录对于那个特定的
我想使用 hibernate envers 在审计表上应用 group by。 我怎样才能做到这一点? 最佳答案 不幸的是,Envers 不支持 Group by。 关于hibernate-enver
我正在尝试使用 hibernate-envers 审核@Embeddable 对象的集合。 根据 https://hibernate.atlassian.net/browse/HHH-6613添加了对
使用 Hibernate Envers 我想获得所有 实体 , 修订号 , 修订日期 和 修订类型 实体的 ID。 目前我这样做是为了获取实体、修订号和修订日期: public List obtene
我从休眠的 Envers 3.6 移植到 Envers 4.0。这个新版本没有 审计事件监听器 .旧版本要求:listeners 我找不到如何配置新版本。 最佳答案 在 4.0 版中:
我的应用程序使用 envers 将数据写入 _aud 表,并将其包装到写入另一个表的 xml 中。我在 Envers 4.3 中使用条件审核来完成此操作。我的类扩展了 EnversIntegrator
我需要为项目中的所有 CRUD 操作实现审计历史记录。该项目使用 Spring JPA Data Rest。我四处寻找好的图书馆来完成所需的任务,并遇到了这个 Hibernate Envers ,这看
我正在做很多 rnd 来为一个大项目做审计。该项目将完全基于带有 JPA 和 Hibernate 的 Spring 框架来完成数据映射部分。对于审计,我遇到了各种特性和技术。使用 Hibernate
用户有 n 个联系人。联系人可以有本地化的评论(评论在联系人之间共享)。 Java Bean: @Audited @Entity public class User { @OneToMany(
我无法使用连接表( https://stackoverflow.com/a/7603036 和 https://en.wikibooks.org/wiki/Java_Persistence/ManyT
我有一个 Envers 查询返回一个惰性结果,尽管该字段在 hibernate 映射中定义为惰性 =“false”。 我在 Hibernate-Envers 论坛上查找过它,但没有找到任何有用的信息。
使用 JBoss Envers (4.2.0 FINAL) 注释但在尝试审计 @Enumerated 属性时失败 @Entity @Audited public class TestEntity ex
项目使用 Hibernate 3.5、Spring Webflow 2 和 Hibernate Envers 进行审计。 Envers 在 hibernate.cfg.xml 中配置。我在实体“Art
我正在我正在从事的项目中实现 Hibernate Envers,对于此客户端,数据库中的表和列必须遵循特定的名称模式。名称模式使用表名来生成部分列名,并且保存修订的表与原始表具有不同的名称(当然),因
我有一个正在运行的 ENVERs 项目,我正在完成该项目的实现,并注意到属性级别修改跟踪功能。此功能听起来非常适合我们的需求,并将取代一些(手动)表。 问题就出在这里;我在数据库中设置了字段,但当我更
我有一个 envers 查询来查找给定实体的历史记录,我想做的是使用请求中指定的谓词。 例如,我希望能够根据发送的请求按日期/用户/修订类型等(或字段组合)进行过滤。 我知道如何添加谓词,我只是想知道
跟进这三个主题: Getting the old value and new value between two revisions withHibernate Envers Diff on hibe
Doctrine 1.x 和 2 都以单独的审计表的形式提供某种 Versionable 支持,用于跟踪随时间的变化。然而,这些版本似乎是为每行使用(即,它们都维护自己的版本号)而不是数据库范围的,例
我是一名优秀的程序员,十分优秀!