第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

“多袋取料異常:不能同時(shí)取多袋”加入三深度表

“多袋取料異常:不能同時(shí)取多袋”加入三深度表

呼啦一陣風(fēng) 2022-09-01 16:23:50
org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.loader.MultipleBagFetchException: can can同時(shí)獲取多個(gè)包: [Order.items, OrderItem.options];以上是我在加入三個(gè)表時(shí)遇到的異常,如下所示。OrderItemOption.java@Entitypublic class OrderItemOption {  @Id  @GeneratedValue(strategy = GenerationType.IDENTITY)  @Column(name = "item_option_id")  private Long id;  @Column(name = "item_id", nullable = false)  private Long itemId;  @ManyToOne(fetch = FetchType.LAZY)  @JoinColumn(      name = "item_id",      referencedColumnName = "item_id",      insertable = false,      updatable = false  )  private OrderItem orderItem;}訂單項(xiàng).java@Entitypublic class OrderItem {  @Id  @GeneratedValue(strategy = GenerationType.IDENTITY)  @Column(name = "item_id")  private Long id;  @Column(name = "order_id", nullable = false)  private Long orderId;  @ManyToOne(fetch = FetchType.LAZY)  @JoinColumn(      name = "order_id",      referencedColumnName = "order_id",      insertable = false,      updatable = false,      nullable = false  )  private Order order;  @OneToMany(fetch = FetchType.LAZY, mappedBy = "orderItem")  @OrderBy("item_option_id ASC")  private List<OrderItemOption> options;}訂購(gòu).java@Entitypublic class Order {  @Id  @Column(name = "order_id", nullable = false)  private Long id;  @OneToMany(fetch = FetchType.LAZY, mappedBy = "order")  @OrderBy("item_id ASC")  private List<OrderItem> items;}這是我的QueryDSL代碼,可以一次加入它們。final QOrder order = QOrder.order;final QOrderItem item = QOrderItem.orderItem;final QOrderItemOption option = QOrderItemOption.orderItemOption;from(order).leftJoin(order.items, item).fetchJoin().leftJoin(item.options, option).fetchJoin().where(    order.id.eq(orderId)        .and(item.id.in(itemIds))        .and(option.id.in(optionIds))).fetchOne())我試圖做的是獲取包含過濾關(guān)系的Order對(duì)象,以便我可以通過訂單對(duì)象訪問過濾的子級(jí)。關(guān)系的類型應(yīng)該是列表,而不是集合。例如,order.getItems().get(0).getOptions.get(0)我怎樣才能實(shí)現(xiàn)這個(gè)目標(biāo)?
查看完整描述

2 回答

?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

為了避免上述異常,有兩種可能性:

  1. 更改為
    ListSet

  2. 使用但不要拿兩個(gè)袋子。這意味著不要在兩個(gè)集合上使用。ListfetchJoin()

濾波:

使用不會(huì)篩選條件集合的位置。集合將包含所有關(guān)聯(lián)的對(duì)象。加入 JPA 是為了在根對(duì)象 - 順序上創(chuàng)建條件。它與SQL中不同。

可以使用 JPA 2.1 功能來篩選關(guān)聯(lián)的集合。這允許在子句中附加條件JOIN ONON


查看完整回答
反對(duì) 回復(fù) 2022-09-01
?
繁星點(diǎn)點(diǎn)滴滴

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;

}


查看完整回答
反對(duì) 回復(fù) 2022-09-01
  • 2 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)