原因:org.hibernate.MappingException:只能用@RevisionEntity注释一个实体

原因:org.hibernate.MappingException:只能用@RevisionEntity注释一个实体,hibernate,Hibernate,我尝试使用Hibernate Envers记录实体历史。但失败了 我的项目使用了Spring3.1、JPA和SpringDataJPA(Hibenrate4.1) 有一个基础类 代码: 当我在实体中添加@RevisionEntity时 代码: 代码: @实体 @表(name=“address”) @修正实体 公共类地址扩展com.dna.bifinga.model.BaseEntity 当我将项目部署到tomcat中时,我得到了这样的异常 引述: org.springframework.bean

我尝试使用Hibernate Envers记录实体历史。但失败了

我的项目使用了Spring3.1、JPA和SpringDataJPA(Hibenrate4.1)

有一个基础类

代码:

当我在实体中添加@RevisionEntity时

代码:

代码:

@实体 @表(name=“address”) @修正实体 公共类地址扩展com.dna.bifinga.model.BaseEntity

当我将项目部署到tomcat中时,我得到了这样的异常

引述:

org.springframework.beans.factory.BeanCreationException:错误 创建名为的bean 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0': bean初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 正在创建URL中定义了名为“entityManagerFactory”的bean [jar:file:/E:/MyWorks/bifinga/project/bifinga网站/target/fi/WEB-INF/lib/bifinga-library-1.0-SNAPSHOT.jar!/common/data access.xml]: 调用init方法失败;嵌套异常是 javax.persistence.PersistenceException:[PersistenceUnit:bifinga] 无法生成EntityManagerFactory 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 位于org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:728) 位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:449) 位于org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385) 位于org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) 位于org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 位于org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779) 位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) 位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895) 位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871) 位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) 位于org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649) 位于org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:530) 位于org.apache.catalina.startup.HostConfig.check(HostConfig.java:1471) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:601) 位于org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) 位于com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 位于com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:791) 位于org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1436) 位于org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:856) 位于org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:353) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 位于org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) 位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) 位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 在java.util.concurrent.Thre
@javax.persistence.MappedSuperclass
public abstract class BaseEntity implements Serializable {



    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", columnDefinition = "INT unsigned", nullable = false)
    @RevisionNumber
    public Long id;



    @Version
    @Column(name = "jpaversion", nullable = false, columnDefinition = "INT unsigned")
   @RevisionTimestamp
    public Long version;



    public Long getId() {
   return id;
    }



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



    public Long getVersion() {
   return version;
    }



    public void setVersion(Long version) {
   this.version = version;
    }



    @Override
    public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((id == null) ? 0 : id.hashCode());
   return result;
    }



    @Override
    public boolean equals(Object obj) {
   if (this == obj)
       return true;
   if (obj == null)
       return false;
   if (getClass() != obj.getClass())
       return false;
   BaseEntity other = (BaseEntity) obj;
   if (id == null) {
       if (other.id != null)
      return false;
   } else if (!id.equals(other.id))
       return false;
   return true;
    }



}
@Entity
@RevisionEntity
@Table(name = "user", uniqueConstraints = {
    @UniqueConstraint(name = "UQ_gsmPrefix_gsmNumber", columnNames = {"gsm_prefix", "gsm_number"}),
    @UniqueConstraint(name = "UQ_email", columnNames = "email"),
    @UniqueConstraint(name = "UQ_username", columnNames = "username")})
@NamedQueries({
    @NamedQuery(name = "User.findByUsername", query = "select u from User u where u.username=:username"),
    @NamedQuery(name = "User.findByEmail", query = "select u from User u where u.email=:email")})
@Access(AccessType.FIELD)
public class User extends BaseEntity implements UserDetails, Serializable {