我需要 3 个实体:用户、合同(这是多对多关系)和一个中间实体:用户合同(需要存储一些字段)。
我想知道的是在 JPA/EJB 3.0 中定义这些实体之间关系的正确方法,以便操作(持久化、删除等)正常。
例如,我想创建一个用户及其合约并以一种简单的方式持久化它们。
目前我所拥有的是:在 User.java 中:
@OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
private List<UserContract> userContract;
在 Contract.java 中:
@OneToMany(mappedBy = "contract", fetch = FetchType.LAZY)
private Collection<UserContract> userContract;
还有我的 UserContract.java:
@Entity
public class UserContract {
@EmbeddedId
private UserContractPK userContractPK;
@ManyToOne(optional = false)
private User user;
@ManyToOne(optional = false)
private Contract contract;
还有我的 UserContractPK:
@Embeddable
public class UserContractPK implements Serializable {
@Column(nullable = false)
private long idContract;
@Column(nullable = false)
private String email;
这是实现我的目标的最佳方式吗?