我有兩個實體Sell
和Buy
,每個實體都有一個列表Offer
,如下所示。在兩個實體中映射相同的列表並使用彈簧數據更新列表
我的疑問是如何映射這兩個實體在Offer
。我是否必須爲每個人添加一個帶有@ManyToOne
註釋的屬性?我目前的映射是否正確?
此外,當我向要約列表添加新元素時,如何使用Spring Data更新它? 我正在使用存儲庫JpaRepository
,但沒有找到更新或合併bean的方法。
賣實體:
@Entity
public class Sell implements Serializable {
@Id
@GeneratedValue(generator = "sell_sequence", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "sell_sequence", sequenceName = "sell_sequence", allocationSize = 1)
private Long id;
// other fields...
@OneToMany(cascade = { CascadeType.REMOVE, CascadeType.MERGE, CascadeType.PERSIST })
@JoinTable(name = "selloffer",
joinColumns = @JoinColumn(name = "sell_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "offer_id", referencedColumnName = "id"))
private List<Offer> offers = new ArrayList<>();
// constructors, getters and setters...
}
購買實體:
@Entity
public class Buy implements Serializable {
@Id
@GeneratedValue(generator = "buy_sequence", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "buy_sequence", sequenceName = "buy_sequence", allocationSize = 1)
private Long id;
// other fields...
@OneToMany(cascade = { CascadeType.REMOVE })
@JoinTable(name = "buyoffer",
joinColumns = @JoinColumn(name = "buy_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "offer_id", referencedColumnName = "id"))
private List<Offer> offers;
// constructors, getters and setters...
}
及發售:
@Entity
public class Offer implements Serializable {
@Id
@GeneratedValue(generator = "offer_sequence", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "offer_sequence", sequenceName = "offer_sequence", allocationSize = 1)
private Long id;
@Column(length = 500)
String description;
@ManyToOne(cascade = { CascadeType.PERSIST })
@JoinColumn(name = "bidder_id", nullable = false)
User bidder;
}
爲什麼在OneToMany Reation上使用連接表?這些應該只是ManyToMany關係需要 –
我認爲有必要創建中間表「buyoffer」和「selloffer」。雖然我不確定這是否正確。 –
所以每個offer只有1個Buy and Sell實例? –