【发布时间】:2011-03-01 10:19:21
【问题描述】:
我有一个 Auction 和一个 Item 类,它们之间存在多对多关系。
public class Auction implements BaseEntity,Comparable<Auction>{
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "auction_id")
private Long auctionId;
@Basic(optional = false)
@Column(name = "auction_name")
private String auctionName;
@ManyToMany
@JoinTable(name = "auction_items", joinColumns = {
@JoinColumn(name = "auction_id", referencedColumnName = "auction_id")}, inverseJoinColumns = {
@JoinColumn(name = "item_id", referencedColumnName = "item_id")})
private List<Item> itemList;
.....}
public class Item implements BaseEntity{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="item_id")
private long itemId;
@Column(name="item_name")
private String itemName;
public class Item implements BaseEntity{
private static final long serialVersionUID = 1L;
@ManyToMany
@JoinTable(name="auction_items",joinColumns={@JoinColumn(name="item_id")},inverseJoinColumns={@JoinColumn(name="auction_id")})
private List<Auction> auctionList;
}
在创建新的拍卖时,有时我想选择一个现有的项目并与新的拍卖相关联,有时,我想创建一个新的项目。
如果我使用如图所示的 (cascade=CascadeType.ALL) 关系
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name = "auction_items", joinColumns = {
@JoinColumn(name = "auction_id", referencedColumnName = "auction_id")}, inverseJoinColumns = {
@JoinColumn(name = "item_id", referencedColumnName = "item_id")})
private List<Item> itemList;
然后,我将无法将现有项目与新拍卖实例相关联,如果我不使用这种级联关系,我将无法使用新拍卖创建新项目。
有人可以就提供这种灵活性的 Spring 的任何功能提供建议吗?
【问题讨论】:
标签: hibernate jpa many-to-many cascade