当前位置: 首页 > 面试题库 >

带有持久性问题的Java Hibernate问题---如果未定义FetchType,默认方法是什么?

常培
2023-03-14
问题内容

大家好,我是Hibernate和JPA的新手

我编写了一些函数,最初,我在实体类中设置了 fetch = FetchType.LAZY 。但这给了我错误:“
org.hibernate.LazyInitializationException:无法初始化代理-没有会话”

@OneToMany(cascade = CascadeType.ALL, mappedBy = "logins", fetch=FetchType.LAZY,targetEntity=Invoice.class)
public List<Invoice> getInvoiceList() {
    return invoiceList;
}

public void setInvoiceList(List<Invoice> invoiceList) {
    this.invoiceList = invoiceList;
}

然后我将其更改为fetch =
FetchType.EAGER,它工作正常。我想知道如果不声明FetchType会发生什么,Hibernate是否自行确定要使用哪种方法?还是EAGER默认设置?

@OneToMany(cascade = CascadeType.ALL, mappedBy = "logins", fetch=FetchType.EAGER,targetEntity=Invoice.class)
public List<Invoice> getInvoiceList() {
    return invoiceList;
}

public void setInvoiceList(List<Invoice> invoiceList) {
    this.invoiceList = invoiceList;
}

谢谢!!!!!!!!!


问题答案:

我想知道如果不声明FetchType,Hibernate会自行确定要使用哪种方法吗?还是EAGER默认设置?

实际上,此行为不是特定于Hibernate的,而是由JPA规范定义的,您可以在规范或OneToMany注释或源的Javadoc中找到答案。从来源:

/** (Optional) Whether the association should be
 * lazily loaded or must be eagerly fetched. The
 * {@link FetchType#EAGER EAGER} strategy is a
 * requirement on the persistenceprovider runtime
 * that the associatedentities must be eagerly fetched.
 * The {@link FetchType#LAZY LAZY} strategy is a hint
 * to the persistence provider runtime.
 */
FetchType fetch() default LAZY;

话虽这么说,尽管有非常合理的用例FetchType.EAGER,但EAGER仅仅避免使用LazyInitializationException(当您尝试在分离的对象上加载懒惰的关联时发生)比真正的解决方案更能解决问题。



 类似资料:
  • 我一直在做一个用Java编写国际象棋的项目。我有一个名为的抽象类,它有一个抽象方法和两个普通方法。每个棋子我都有一个类,它们都扩展了。 有一个类也代表棋盘,叫做。在这个类中,我有一个方法来检查给定位置的棋子是否属于另一个玩家。在这个方法中,我调用了一个来自类的方法,该方法获取名为的颜色。当我在一个棋子上调用这个方法时,它说“方法getColor()对于类型Piece是未定义的”,即使它是在类中创建

  • 它给出了错误:ORA-06550:第9行,第7列:PLS-00103:在期望下列之一时遇到了符号“elsif”: &=-+;in是mod余数而不是rem<>或!=或~=>=<=<>和或类似于2类似于4类似于multiset成员子multiset之间 00000-“行%s,列%s:\n%s”*原因:通常是PL/SQL编译错误。

  • 问题内容: 我有一个应用程序想要对与Hibernate和/或持久性有关的可能问题进行测试验证。 还有什么其他问题? 我如何(从字面上)复制它们?您如何从他们那里康复呢? 明确地说:我正在谈论多线程集群环境(最复杂的集群环境)。 我的唯一: 复制: 加载对象。 使用HQL进行更新。 尝试更新(保存)已加载的对象。 句柄:不确定… 问题答案: 延迟加载是您将遇到的主要问题之一,尤其是如果遵循标准的DA

  • 我是Gatling的新手,试图从CSV中读取一些字段,并在我的Gatling场景中使用它们,但面临 未定义属性名称“CSVFieldName” 问题 一些细节: 加特林版本:bundle-2.2.3 CSV名称:memId.csv CSV内容: Scala文件内容: 解决这个问题的任何帮助或线索都是值得赞赏的。 附言:输入csv文件中没有空格。

  • 本文向大家介绍问题:Bootstrap方法是什么?相关面试题,主要包含被问及问题:Bootstrap方法是什么?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 从一个数据集中有放回的抽取N次,每次抽M个。 解析:Bagging算法基于bootstrap。面试时结合Bagging算法讲述会更好。

  • 我正在工作的Android房间持久库。我还在我的项目中实现了双向数据绑定。在项目中,我插入用户的方法是填写一个表单,将所有用户显示在行中,然后单击“特定用户行”更新用户。下面是我的UserDao类: 对于数据绑定,我绑定UserFormActivity中的用户模型 在userModel中获取user数据进行更新后,我希望user数据在执行数据绑定的user表单中反映出来,但它没有反映出来。我被这个