来自同一实体的多个外键? (JPA Hibernate)

时间:2017-03-16 19:58:50

标签: java spring hibernate jpa spring-boot

我有两个实体,一个是Customer和一个CustomerTransaction。我希望能够在CustomerTransaction中将两个客户ID存储为外键(一个用于客户启动事务,一个用于客户接收)。我还希望每个Customer对象都包含它们链接到的所有CustomerTransactions的列表。

Customer.java

@Entity
public class Customer {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  private String firstName;
  private String lastName;

  //@ManyToOne ?
  private List<CustomerTransaction> customerTransaction;

  //getters and setters
}

CustomerTransaction.java

@Entity
public class CustomerTransaction {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  //@OneToMany ?
  private Customer initiater;
  //@OneToMany ?
  private Customer receiver;

  private String transactionDetails;

  //getters and setters
}

如何设置jpa注释,以便每个事务都包含启动和接收客户的外键ID?

1 个答案:

答案 0 :(得分:1)

initiaterreceiver需要使用ManyToOne进行注释(许多交易由一个初始化程序启动)。

OneToMany中需要两个Customer:一个用于已启动的转移(OneToMany(mappedBy = "initiater")),另一个用于收到的交易:OneToMany(mappedBy = "receiver")

你不能只有一个清单(无论如何它可能都不可取)。