Java 同一实体之间双向一对多关系的级联添加/删除
我正在为同一类型的两个实体之间的双向1..*关系建模。我使用的是OpenJPA2.3.0(JPA v2.0),底层数据库是MySQL 假设我想对读者之间的图书借阅进行建模。因此:Java 同一实体之间双向一对多关系的级联添加/删除,java,mysql,jpa,many-to-many,openjpa,Java,Mysql,Jpa,Many To Many,Openjpa,我正在为同一类型的两个实体之间的双向1..*关系建模。我使用的是OpenJPA2.3.0(JPA v2.0),底层数据库是MySQL 假设我想对读者之间的图书借阅进行建模。因此: @Entity @Table(name = "READER") public class Reader { @Id @GeneratedValue private Long id; @Column(nullable = false) private String name;
@Entity
@Table(name = "READER")
public class Reader {
@Id
@GeneratedValue
private Long id;
@Column(nullable = false)
private String name;
@OneToMany(mappedBy = "borrower")
private Collection<LendingRecord> borrowedFromRecords;
@OneToMany(mappedBy = "lender")
private Collection<LendingRecord> lentToRecords;
}
@Entity
@Table(name = "LENDING_RECORD")
public class LendingRecord {
@Id
@GeneratedValue
private Long id;
@ManyToOne(optional = false)
@JoinColumn(nullable = false)
private Reader borrower;
@ManyToOne(optional = false)
@JoinColumn(nullable = false)
private Reader lender;
@Column(nullable = false)
private String bookName;
@Column(nullable = false)
private String returnByDate;
}
@实体
@表(name=“READER”)
公共类阅读器{
@身份证
@生成值
私人长id;
@列(nullable=false)
私有字符串名称;
@OneToMany(mappedBy=“借款人”)
从档案中借来的私人收藏;
@OneToMany(mappedBy=“贷款人”)
私人收藏档案;
}
@实体
@表(name=“借出记录”)
公共类借阅记录{
@身份证
@生成值
私人长id;
@多通(可选=假)
@JoinColumn(nullable=false)
私人读者借款人;
@多通(可选=假)
@JoinColumn(nullable=false)
私人读者出借人;
@列(nullable=false)
私有字符串书名;
@列(nullable=false)
私有字符串returnByDate;
}
阅读器
有两个藏书集——借来的书和借出的书。LendingRecord
存储有关出借图书的附加信息我正试图在这两个表之间实现一致的同步。
- 如果我从两个集合中的一个集合中删除
,并保存借出记录
,则:读取器
- 应从表中删除
行LendingRecord
- 其他集合也应更新以删除
——无悬空引用李>LendingRecord
- 应从表中删除
- 将
添加到任何一个集合时,都应该执行类似的操作LendingRecord
- 相反,如果我删除一个
,则所有相关的读卡器
也应删除,并且这些记录中的其他借出记录
也应更新读卡器
CASCADE
s或orphaneremovation
对这种行为建模?还是有更好的模式来实现相同的行为?请参阅。