Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 多层叠关系方案_Hibernate_Jpa_Many To Many_Cascade - Fatal编程技术网

Hibernate 多层叠关系方案

Hibernate 多层叠关系方案,hibernate,jpa,many-to-many,cascade,Hibernate,Jpa,Many To Many,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_i

我有一个拍卖和一个物品类,它们之间有着多对多的关系

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;
}
然后,我将无法将现有项目与新拍卖实例关联,如果我不使用此级联关系,则我将无法使用新拍卖创建新项目


有人能就Spring提供这种灵活性的任何特性提出建议吗

多对多关系可以(也应该)更改为一对多关系。拍卖应该能够包含许多物品,但在许多拍卖中有一件物品是没有意义的;您可能尝试的是在多次拍卖中使用项目名称。例如:


您希望在许多拍卖中使用商品名称“Car”,因为您有许多汽车要出售,但请将每一辆汽车视为一个单独的实体,即商品标识“Car37191”,即黑色梅赛德斯只能在一次拍卖中使用。

多对多关系可以(也应该)可以更改为一对多关系。拍卖应该能够包含许多物品,但在许多拍卖中有一件物品是没有意义的;您可能尝试的是在多次拍卖中使用项目名称。例如:


你想在很多拍卖会上拍卖商品名称“Car”,因为你有很多车要卖,但是把每一辆车看作一个单独的实体,商品标识“Car37191”,黑色梅赛德斯只能在一次拍卖会上拍卖。

但条件是这样的,我需要我的实体之间的多对多关系,所以我可以有任何解决方案让我同时做这两件事,有时用新拍卖附加现有物品(不像级联),有时用新拍卖创建新物品(像级联方式)。当然。通过静默地实例化。在我的示例中,您将为每次拍卖实例化“Car”,但保留名称“Car”,而不是更具体的名称。然后,每次拍卖都会有一个不同的对象,但因为它有相同的名称,所以没有人会知道。但条件是,我需要实体之间的多对多关系,所以我可以有任何解决方案,让我同时进行这两项工作,有时将现有项目与新拍卖相关联(不像层叠)当然,有时也会用新的拍卖方式(比如级联方式)创建一个新项目。通过静默地实例化。在我的示例中,您将为每次拍卖实例化“Car”,但保留名称“Car”,而不是更具体的名称。然后,每次拍卖都会有一个不同的对象,但因为它有相同的名称,所以没有人会知道。
@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;