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

在使用FlushModeType.AUTO进行本机查询之前,JPA不会刷新

公孙志
2023-03-14
问题内容

在我们的项目中,我们使用hibernate
5.0.12和Spring数据Jpa。我发现jpa不会在本机查询之前调用flush。但是在JPA规范中,我使用FlushModeType读取了它.AUTO
flush()在每个查询(JPQL或本机SQL)之前都调用.i我猜它在hibernate版本中存在问题。有人可以澄清这个问题吗?这个问题我们有很多问题。


问题答案:

本文已对此进行了解释 。

hibernateAUTÓ刷新不会为本地SQL查询触发。从5.2开始,这完全取决于您如何引导Hibernate。JPA引导程序将产生JPA行为,该行为将在进行任何查询之前触发刷新,而本机引导程序则不会。

对于较旧的Hibernate版本,即使对于JPA引导程序,它的行为也与传统的刷新模式相同。



 类似资料:
  • 我有一个实体叫做Test。java有70个字段,其中一些字段还与其他实体相关(通过连接一对多、多对一等关联)。 我需要有一个这种类型的对象,但我不需要所有的字段,只有3个字段,其中一个字段与其他实体有外键关系。 因此,我在执行查询的同时编写了一个本机查询。jpa执行其他查询也会导致花费太多时间来完成。 这是我的实体类: 这是我的原生查询 我怎样才能得到具有选定字段的订单实体对象,我不需要其他字段意

  • 当使用jpa本机查询 事务传播是我们正在使用的正确jpa的唯一特性吗? 在我的意见中,我就像使用普通的旧jdbc pluc jpa事务传播 我正在阅读PRO JPA一书,根据我的理解 当我们使用JPA本机查询获取一组标量值时(与我们使用jdbc的方式很相似),实际上没有托管实体和持久性上下文的概念。当我们通过本机查询检索实体时,情况会发生变化。

  • 我想用本机查询的结果填充数据传输对象类。但我收到以下错误: 这是我的DTO课 这是我的原生查询。这是一个简单的查询: 我使用的是Spring Data JPA,但我知道在hibernate中存在一个方法setResultTransformer,但我在JPA中找不到类似的方法。 在我的例子中,我需要使用本机查询,因为在其他查询中会使用表值函数。

  • 我正在使用。我有一个名为User的实体类,其属性如下userId,用户名,密码。我 通过将字段命名为这三个属性名来设计jrxml。如果我从用户那里给出jpa查询,那么它工作正常并给出结果。但是我想要userName的不同值(userName列也允许重复值),所以我将jpaQuery指定为 那我得不到结果。查询有什么问题。 嗨,我在这里给出了我正在使用的代码 这里我得到了ClassCastExcep

  • 在Spring声明性事务管理中,当您试图持久化数据库中已经存在的某个实体时,您只能在Spring事务提交期间获得DataIntegrityViolationException。因此,此方法不起作用,此处不会捕获大括号中的异常: 仅在结束时: 我发现了几个解决方法: 不使用@事务 使用冲洗 调用服务时捕获异常 在持久化之前查找 现在我在考虑em.flush和em.find(在坚持之前)。哪种方法更好

  • 我有现有的学生,临时演员 如何在JPA Hibernate上加入这些表?我当前的代码是 学生实体类 附加实体类: 和地址实体类 这是我的存储库类 但是当我在学生实体中使用OneToOne时,我得到了异常“org.hibernate.LazyInitializationException:未能懒惰地初始化角色集合:com.jpa.belajarjpa.enitities.Student.extras