2011-03-01 7 views
1

私はオークションと、多かれ少なかれ多くの関係を持つ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)の関係を使用している場合は、私は、新しいオークションのインスタンスで既存の項目を関連付けることができないだろうと私は、このカスケード関係を使用していない場合、私はよ新しいオークションで新しいアイテムを作成することはできません。

誰かがこのような柔軟性を提供するSpringの機能に関する提案をしてもらえますか?

答えて

1

多対多リレーションシップは、一対多リレーションシップに対して変更できます(また、変更する必要があります)。オークションは多くのアイテムを含むことができるはずですが、多くのオークションでアイテムを持つことは意味がありません。多分オークションでの商品名をお持ちでした。例:

はあなたが販売する多くの車を持っているので、しかし別のエンティティ、アイテムアイデンティティ「Car37191」として一つ一つの車を考える、多くのオークションに項目名「カー」をしたいです、黒いメルセデスが1つのオークションにしかないことができます。

+0

しかし、条件は私のエンティティ間で多くの関係を必要とするので、私は両方をやり遂げることができる解決方法がありますか(カスケードとは異なります)新しいオークションのアイテム(カスケードされた方法など)。 – Aakanksha

+0

もちろん。静かにインスタンス化するだけです。私の例では、すべてのオークションで "Car"をインスタンス化しますが、より具体的なものではなく、 "Car"という名前を付けます。各オークションには異なるオブジェクトがありますが、名前が同じであるため誰も知りません。 –