当前位置: 首页 > 知识库问答 >
问题:

保持新的JPA实体并分离

董畅
2023-03-14
    null

我能找到的使用JPA/Hibernate的唯一有效解决方案是执行以下步骤。这是因为hibernate将实体保留在第一级缓存中,直到事务结束。

  • 创建新实体
  • 强制快速刷新()
  • 分离实体

这样做的开销是

    null
  • 使用JDBC或JdbcTemplate,但您必须为实体编写自己的插入

所以问题是:是否存在同时坚持和分离的可能性,或者甚至更好地坚持而不成为被管理的?

共有1个答案

尚阳炎
2023-03-14

您可以使用没有第一级缓存的无状态会话。从文档中:

 StatelessSession session = sessionFactory.openStatelessSession();
 Transaction tx = session.beginTransaction();
 ScrollableResults customers = session.getNamedQuery("GetCustomers")
        .scroll(ScrollMode.FORWARD_ONLY);
 while ( customers.next() ) {
     Customer customer = (Customer) customers.get(0);
     customer.updateStuff(...);
     session.update(customer);
 }     
 tx.commit();
 session.close();

在此代码示例中,查询返回的Customer实例被立即分离。它们从不与任何持久性上下文关联。

https://docs.jboss.org/hibernate/orm/3.3/referen/en/html/batch.html

 类似资料:
  • 我正在使用springboot jpa存储库保存方法 这是完整的错误:2020-06-09 15:49:02.371[nio-8080-exec-4]。M.M.A.ExceptionHandlerExceptionResolver:由处理程序执行导致的解析异常:org.springframework.dao.invalidDataAccessapiusageException:传递给persist

  • 问题内容: 我有一个JPA持久对象模型,其中包含多对一关系:一个具有许多。A 有一个。 这是一段代码: 我能够创建一个对象,向其中添加事务,并正确地持久保存该对象。但是,当我 使用现有的已经持久化的Account 创建一个事务并持久化 该Transaction时 ,出现一个异常: 引起原因:org.hibernate.PersistentObjectException:传递给持久对象的分离实体:c

  • 属性: 这是(Spring): 通过一个REST控制器和一个JSON,我想创建一个新的: 输出JSON: 我希望它们在保存操作之后被验证/返回。 要解决此问题,我必须在REST控制器中注入/声明,并调用方法(或者我必须调用方法以获得完整的持久化实体): 是否有一个自动的方法/注释,使用JPA或Spring或Hibernate,以便拥有“完整的”持久化实体? 我希望避免在每个REST或服务类中声明,

  • 我已经尝试使用Spring Boot+Spring Data JPA更新实体很久了。我得到所有正确的观点回到我。我的编辑视图按ID向我返回正确的实体。一切进展顺利。直到我实际尝试保存/合并/持久化对象。每次我拿回一个有新ID的新实体。我只是不知道为什么。我看了网上的例子,还有你可能会参考的重复问题的链接。那么,在这些代码中,我在哪里犯了错误呢? 在这段代码之后。我的视图将我返回到正确的URL,但I

  • 我有两个实体类Organization和User具有一对多关系(为了简单起见,Groovy代码!): 当我为一个新的组织创建一个新的用户时,一切都运行良好: 但当我使用一个现有的组织,将其设置为新用户的组织属性时,我会得到一个错误: 将导致: org.hibernate.PersistentObjectException:传递给Persist:Organization的分离实体 我知道不能对一个分

  • 问题内容: 问题基本上与下面的问题相同: JPA级联仍然存在,对分离实体的引用将引发PersistentObjectException。为什么? 我正在创建一个引用现有的分离实体的新实体。现在,当我将此实体保存在spring数据存储库中时,会引发异常: 如果我们查看Spring数据JPA的源代码中的save()方法,则会看到: 如果我们看一下isNew() 因此,基本上,如果我保存()一个新实体,