2011-03-01 3 views
1

J'ai une enchère et une classe d'objet ayant une relation de plusieurs à plusieurs.ManyToMany alternative de relation en cascade

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

Lors de la création d'une nouvelle vente aux enchères, parfois je veux choisir un élément existant et associé avec une nouvelle vente aux enchères et parfois, un nouvel élément à créer.

Si j'utilise (cascade=CascadeType.ALL) relation comme indiqué

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

Alors, je ne serai pas en mesure d'associer élément existant avec une nouvelle instance d'enchères et si je ne l'utilise pas cette relation en cascade alors je vais ne pas être en mesure de créer un nouvel élément avec une nouvelle enchère.

Quelqu'un peut-il donner des suggestions sur toute caractéristique du printemps qui offre une telle flexibilité?

Répondre

1

La relation plusieurs-à-plusieurs peut (et doit) être modifiée pour une relation un-à-plusieurs. Les enchères devraient être en mesure de contenir de nombreux articles, mais cela n'a aucun sens d'avoir un article dans de nombreuses ventes aux enchères; ce que vous avez probablement essayé était d'avoir un nom d'article dans plusieurs ventes aux enchères. Exemple:

Vous voulez le dans de nombreuses ventes aux enchères « Car » article nom, parce que vous avez beaucoup de voitures à vendre, mais penser à chaque voiture comme une entité distincte, l'élément d'identité « Car37191 », cette Mercedes noire ne peut être que dans une vente aux enchères.

+0

Mais les conditions sont quelque chose comme ça, j'ai besoin de beaucoup de relations entre mes entités, alors je peux avoir une solution qui permette de faire les deux, en attachant parfois un objet existant avec une nouvelle enchère article avec nouvelle vente aux enchères (comme en cascade). – Aakanksha

+0

Bien sûr. En instanciant simplement en silence. Dans mon exemple, vous instanciez "Car" pour chaque enchère mais gardez le nom "Car" au lieu de quelque chose de plus spécifique. Vous avez alors un objet différent dans chaque enchère mais comme il a le même nom, personne ne le saura jamais. –

Questions connexes