开发者

ManyToMany cascade relationship alternative

I have an Auction and an Item class having a many to many relationship with each other.

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;
}

While creating a new Auction, sometime I want to pick an existing Item and associate with new Auction and sometimes, a new Item to be created.

If I use (cascade=CascadeType.ALL) relationship as shown

@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;

Then, I'll not be able to associate existing item with new Auction instance and if I don't use this cascade relationship then I'll not be able to create a new item with new Auction.

Can someone please give suggestions on any feature of Spring that provides such flexibility?


The many-to-many relationship can (and should) be changed for a one-to-many relationship. Auctions should be able to contain many items but it makes no sense to have an item in many auctions; what you probably tried was having an item-name in multiple auctions. Example:

You want the item-name "Car" in many auctions, because you have many cars to sell, however think of every single car as a separate entity, the item-identity "Car37191", that black Mercedes can only be in one auction.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜