【问题标题】:Hibernate join table with other audit tableHibernate 与其他审计表连接表
【发布时间】:2015-08-01 21:48:07
【问题描述】:

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

【问题讨论】:

  • 我不想更改 revinfo 表,我只想将修订用作与其他表的关系。
  • 嗯,可以理解,在这种情况下,您可以简单地将默认修订实体 (org.hibernate.envers.DefaultRevisionEntity) 映射到所需的实体表中。
  • 好的谢谢你能把你的评论作为答案用一些例子来标记它吗? :)
  • 如果我下面的回答有帮助,你介意接受吗?

标签: hibernate one-to-many hibernate-envers


【解决方案1】:

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

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

  // ...
}

【讨论】:

    猜你喜欢
    • 2022-12-14
    • 2017-05-07
    • 2016-10-19
    • 2017-03-07
    • 1970-01-01
    • 2018-09-19
    • 2015-08-20
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多