hibernate 连接表与其他审计表

标签 hibernate one-to-many hibernate-envers

我有一个带有修订的审计表,我想创建另一个与审计表修订具有一对多关系的表。审计修订将指向新表数据。我怎样才能做到这一点?

最佳答案

我在一个项目中做了类似的事情,该项目有学生 GPA(带修订的审计表),然后是一个带有 CurrentGpa 的表。它始终指向 GPA 的主要修订版 table 。为此,我使用了以下结构:

CurrentGpa.java

@Entity(name = HibernateConsts.CURRENT_GPA_TABLE)
public class CurrentGpa {
  protected Gpa gpa;
  protected Student student;
  protected Long id;

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = HibernateConsts.CURRENT_GPA_ID)
  public Long getId() {
    return id;
  }

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

  @OneToOne(optional = true, fetch= FetchType.EAGER)
  @Fetch(FetchMode.JOIN)
  @JoinColumn(name = HibernateConsts.GPA_FK)
  public Gpa getGpa() {
    return gpa;
  }

  public void setGpa(Gpa gpa) {
    this.gpa = gpa;
  }

  @OneToOne(optional = true, fetch= FetchType.EAGER)
  @Fetch(FetchMode.JOIN)
  @JoinColumn(name = HibernateConsts.STUDENT_FK)
  public Student getStudent() {
    return student;
  }

  public void setStudent(Student student) {
    this.student = student;
  }

  // ...
}

Gpa.java
@Entity(name = HibernateConsts.GPA_TABLE)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class Gpa {
  protected Long studentId;
  protected Double score;
  protected LocalDate startDate;
  protected LocalDate endDate;
  protected LocalDate calculationDate;
  protected Long id;

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = HibernateConsts.GPA_ID)
  public Long getId() { return id; }

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

  @Column(name = HibernateConsts.STUDENT_FK)
  public Long getStudentId() {
    return studentId;
  }

  public void setStudentId(Long studentId) {
    this.studentId = studentId;
  }

  @Column(name = HibernateConsts.GPA_SCORE)
  public Double getScore() {
    return score;
  }

  public void setScore(Double score) {
    this.score = score;
  }

  @Column(name = HibernateConsts.GPA_START_DATE)
  public LocalDate getStartDate() {
    return startDate;
  }

  public void setStartDate(LocalDate startDate) {
    this.startDate = startDate;
  }

  @Column(name = HibernateConsts.GPA_END_DATE)
  public LocalDate getEndDate() {
    return endDate;
  }

  // ...
}

关于 hibernate 连接表与其他审计表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30353192/

相关文章:

hibernate - WildFly 9.0.1.Final 附带了哪些版本的库

java - Hibernate @Audited 与 @Version 冲突

spring-boot - Spring 数据-envers Hibernate java.lang.NoSuchMethodError : org. hibernate.engine.spi.SessionImplementor.getTransactionCoordinator

iphone - 核心数据: Fetch all entities in a to-many-relationship of a particular object?

hibernate - 与Hibernate Envers进行集成测试

java - apache tiles 2 JSPException 包括路径

hibernate - 在双向多对一关系中从非所有者方更新实体

java - 从持久性中排除@Entity

java - JPA @OneToMany -> 父 - 子引用(外键)

c# - Entity Framework 包括来自一对多关系的单个对象