Spring Boot + Hibernate:自动生成的数据透视表上的自定义字段

Spring Boot + Hibernate: Custom fields on auto-generated pivot tables

在我的模型中:

public class House {
    ....
    ....
    @OneToMany
    @Nullable
    private List<Person> people;

当 运行 Spring 启动应用程序时,我将看到创建了 table。一个用于 House 模型,一个用于 Person 和另一个,自动生成枢轴 table 以保留关系信息 HousePerson.

我的问题是:如果我想将 created_at 字段添加到数据透视表 table 的行上,那么对于 HousePerson 的每个关联] 我可以告诉 它是什么时候创建的

我找不到办法做到这一点。我错过了什么?

您应该为联接 table (House_Person) 创建一个额外的实体。在新实体中,您可以声明所需的其他字段,例如 created_at。最后你只需要 link 你的两个实体到新的实体 @ManyToOne:

House_Person 实体:

@Entity
@Table(name = "HOUSE_PERSON")
public class HousePerson {
  ...

  private Person person;
  private House house;
 
  // additional fields
  private Date created_at;
  
  ...

  private Person person;
  @ManyToOne(cascade = CascadeType.ALL)
  @JoinColumn(name = "PERSON_ID")
  public Person getPerson() {
    return person;
  }

  private House house;
  @ManyToOne(cascade = CascadeType.ALL)
  @JoinColumn(name = "HOUSE_ID")
  public House getHouse() {
    return house;
  }
}

看看这里的这个例子,我希望它描述得很好: codejava.net/hibernate-many-to-many-association-with-extra-columns-in-join-table-example