【问题标题】:Why can't I use two lists on the same entity class using FetchType.EAGER为什么我不能使用 FetchType.EAGER 在同一个实体类上使用两个列表
【发布时间】:2016-07-15 18:34:26
【问题描述】:

我正在实现一个实体类,它有 2 个一对多关系,但我不能将 fetch = FetchType.EAGER 用于这两个列表。 我应该同时使用FetchType.LAZY

是否有解决方案同时使用 EAGER?

@OneToMany(mappedBy="fournisseur",fetch = FetchType.EAGER,cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE} )
private List<Carburant_entree> carburant_entrees; 

@OneToMany(mappedBy="user",fetch = FetchType.EAGER,cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE} )
private List<Users> theusers; 

【问题讨论】:

标签: java hibernate jakarta-ee mapping many-to-one


【解决方案1】:

只需使用Set 代替List

@OneToMany(mappedBy="fournisseur",fetch = FetchType.EAGER,cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE} )
private Set<CarburantEntree> carburantEntrees; 

@OneToMany(mappedBy="user",fetch = FetchType.EAGER,cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE} )
private Set<Users> users;

请遵循 Java 命名约定。

【讨论】:

  • 谢谢,但我可以使用 LazyCollection(LazyCollectionOption.FALSE) 吗?
  • @AliBouslama 我从不使用它
【解决方案2】:

是的。可以通过注释关系来实现

    @LazyCollection(LazyCollectionOption.FALSE)

在你的情况下应该是。

@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(mappedBy="fournisseur",cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE} )
private List<Carburant_entree> carburant_entrees; 

@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(mappedBy="user",cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE} )
private List<Users> theusers; 

【讨论】:

  • 当我尝试使用 @lazycollection 注释时,它无法识别该注释我该怎么办??
  • FetchType 对 FetchType.EAGER 的使用量有限制。它正在加载两个列表作为 EAGER。其中@LazyCollection(LazyCollectionOption.FALSE) 将允许您将任意数量的列表加载为 EAGER。
  • 忘了提到@LazyCollection(LazyCollectionOption.FALSE) 是特定于休眠的。所以如果你不使用休眠,那么这将不起作用。在这种情况下,您可以选择@v.ladynev 解决方案。
  • @DeendayalGarg 我正在使用休眠但lazycollection 无法识别
  • 您使用的是哪个版本的休眠?我在我的应用程序中使用@LazyCollection(LazyCollectionOption.FALSE) 与休眠版本 4.3.6.FINAL
猜你喜欢
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 2019-09-14
  • 1970-01-01
相关资源
最近更新 更多