2 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
為了避免上述異常,有兩種可能性:
更改為
或List
Set
使用但不要拿兩個(gè)袋子。這意味著不要在兩個(gè)集合上使用。
List
fetchJoin()
濾波:
使用不會(huì)篩選條件集合的位置。集合將包含所有關(guān)聯(lián)的對(duì)象。加入 JPA 是為了在根對(duì)象 - 順序上創(chuàng)建條件。它與SQL中不同。
可以使用 JPA 2.1 功能來篩選關(guān)聯(lián)的集合。這允許在子句中附加條件JOIN ON
ON

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您確實(shí)無法使用 Set 而不是 List:
家長(zhǎng).class
@OneToMany(
mappedBy = "parent",
orphanRemoval = true,
cascade = { CascadeType.PERSIST, CascadeType.MERGE }
)
@OrderColumn(name = "position")
private List<Child> childs = new ArrayList<>();
兒童.class
@ManyToOne(fetch = FetchType.LAZY)
private Parent parent;
并在孩子的表格中創(chuàng)建一個(gè)名為“位置”的列
ALTER TABLE child ADD COLUMN position integer NOT NULL default 0
如果不能在表中使用其他列,則需要按順序查詢列表?;蛘呤褂米蛹?jí)的 id 和自定義 getter。
@OrderColumn(name = "id_child", updatable = false, insertable = false)
public List<Child> getChilds() {
childs.removeAll(Collections.singleton(null));
return childs;
}
添加回答
舉報(bào)