当前位置: 首页 > 知识库问答 >
问题:

原因:组织Hibernate映射异常:只能使用@RevisionEntity对一个实体进行注释

袁奇玮
2023-03-14

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

我的项目使用了Spring 3.1、JPA和Spring Data JPA(Hibenate 4.1)。

有一个基础类。

代码:

@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;
    }



}

当我将@RevisionEntity添加到我的entites中时。

代码:

@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 {

代码:

@Entity @Table(名称=“地址”)@RevisionEntity公共类地址扩展

当我将项目部署到tomcat中时,我得到了这样的例外。

引用:

显然,我同时使用了@Entity和@RevisitonEntity,但它仍然会报告此信息。

我阅读了《Hibernate Dev Guide》中相关章节的文档,似乎在持久化中不需要额外的配置。xml或hibernate配置。我在Spring项目中遗漏了什么吗。

感谢任何帮助。

共有1个答案

彭炳
2023-03-14

为什么需要使用@RevisionEntity对实体进行注释?

@RevisionEntity是表示修订本身的特殊用途实体。如果要让 Envers 审核您的实体,请使用@Audited对其进行注释。

 类似资料:
  • 我想映射类主题到主题表。 主题。JAVA 主题。哈佛商学院。xml 冬眠cfg。xml 我正在读取csv文件的内容,并希望使用以下代码将其插入数据库。 管理ata.java 我得到以下错误 线程“main”组织中出现异常。冬眠MappingException:未知实体:组织中的主题。冬眠impl。SessionFactoryImpl。getEntityPersister(SessionFactor

  • 问题内容: 特定实体存在映射例外。不能弄清楚问题出在哪里。我从头到尾检查了所有映射3次。我仍然收到映射异常。 发送给员工的电子邮件仅映射一次。但它仍然报告错误重复映射 错误是: 电子邮件Pojo email.hbm.xml 相关脚本 发送给员工的电子邮件仅映射一次。但它仍然报告错误重复映射 问题答案: 您是否将Employee中的集合设置为逆?

  • 当我映射同一个实体时,就像这里回答的那样: Hibernate与同一实体的多对多关联 在“tbl_friends”表中,我有相同含义的行。例如,我有id=1的用户和id=2的用户。在“tbl_friends”表中,当他们作为朋友链接时,我有两行 使用Hibernate或JPA引用是否可以在一行(1-2或2-1)中建立这种关系?

  • 我对这些技术是新的,所以提前道歉。 我在我的应用程序中使用了springboot、Spring JPA、hibernate和mapstruct。

  • 我有两个不同的表,Person表和Employee表。我需要这两者之间的一一对应。Employee表的emp_id引用Person表的PERSON_ID。我需要一些帮助来编写使用注释的映射 persons.java

  • 如何在Grails 3.0.1中映射带有注释的域类? 以下步骤对我不起作用。 步骤1.我使用Grails 3.0.1创建了一个新应用程序()。 步骤2。如Hibernate注释映射中所述,我在src/main/com/books/Book中创建了一个新类。groovy(也是groovy) 步骤3。然后通过将相关条目添加到grails-app/conf/Hibernate/Hibernate,向Hi