【问题标题】:Envers AuditReader reader failEnvers AuditReader 阅读器失败
【发布时间】:2016-08-09 21:03:07
【问题描述】:

我在使用 enver 阅读器时出错,对 db 的审核工作正常,但是当我需要创建阅读器时出现错误。..

这是行:

reader.isEntityClassAudited(App_UserDto.class);

其中 App_UserD 有 @Audited 标记。

导致此错误:

java.lang.NoSuchMethodError: javassist.util.proxy.ProxyFactory.isProxyClass(Ljava/lang/Class;)Z
    org.hibernate.envers.internal.tools.EntityTools.getTargetClassIfProxied(EntityTools.java:78)
    org.hibernate.envers.internal.reader.AuditReaderImpl.isEntityClassAudited(AuditReaderImpl.java:298)
    cl.sw.appCenter.sys.audit.AuditLectura.getUserAuditado(AuditLectura.java:31)
    cl.sw.struts.sys.action.UsuariosAction.usuariosLista(UsuariosAction.java:80)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:870)
    ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1293)
    ............

App_UserDto:

@Entity
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
@NamedQueries({
    @NamedQuery(name="user.getUserByUser",
                query="FROM App_UserDto WHERE user = :user"),
}) 
@Table(name = "APP_USER")
public class App_UserDto implements DTO{

    private static final long serialVersionUID = 1L;

    @Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="gen_USERS")
    @SequenceGenerator(name="gen_USERS", sequenceName = "SEQ_APP")
    @Column(name="ID",nullable = false)
    private int id;

    @Column(name="NOMBRE")
    private String nombre;

    @Column(name="APELLIDO")
    private String apellido;

    @Column(name="USUARIO")
    private String user;

    @Column(name="CLAVE")
    private String clave;

    @Column(name="ACTIVO", insertable=false)
    private String activo;

    @Column(name="EMAIL")
    private String email;

    @Column(name="FONO")
    private String fono;

    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="ID_PERFIL",nullable=true)
    private App_PerfilDto perfil;
    .....

pom.xml

...
<dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>5.0.10.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-envers</artifactId>
      <version>5.0.10.Final</version>
    </dependency>
...

有什么建议吗?

我的 DTO.. 在这里。

public interface DTO extends Serializable{

    public String getRegistro();
    public void cleanRegistro();

}

【问题讨论】:

  • 您能否偶然用您的 DTO 界面更新您的问题?
  • 嗨,谢谢你的提问....当然是的
  • 您的类路径中的 javassist 版本是什么?看起来可能是不匹配,这就是您遇到此问题的原因。
  • 嗨,我在 maven 库 3.1.8.1 和 3.1.1.0 上有两个 javassist 版本

标签: java hibernate maven hibernate-envers


【解决方案1】:

已修复:在我的 Maven 库中,有两个版本的 javassist.jar ,一个是 Hibernate,另一个在 struts2-core 中,删除了 Struts 2 并且它可以工作。

【讨论】:

    猜你喜欢
    • 2019-07-25
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2016-01-12
    相关资源
    最近更新 更多