1
我有一个Auction和一个Item类,它们之间具有多对多的关系。ManyToMany级联关系替代方案
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;
}
在创建一个新的拍卖,有时我想挑一个现有的项目和准新的拍卖,有时,要创建一个新的项目。
如果我使用如图
@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;
然后(cascade=CascadeType.ALL
)关系,我会无法现有项目与新的拍卖实例相关联,如果我不使用这种级联关系,然后我会无法使用新拍卖创建新项目。
有人可以给任何提供这种灵活性的功能的建议吗?
但条件是这样的,我需要我的实体之间的多对多关系,所以我可以有任何解决方案,让我做两个,有时附加现有的项目与新的拍卖(不同级联),有时创建一个新的与新的拍卖项目(如级联方式)。 – Aakanksha 2011-03-07 13:10:02
当然。通过静静地实例化。在我的例子中,您将为每次拍卖实例化“Car”,但保留“Car”的名称而不是更具体的内容。然后,您在每次拍卖中都会有不同的对象,但由于它具有相同的名称,所以不会有人知道。 – 2011-03-07 14:42:36