- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有以下代码:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("test")
EntityManager entityManager = emf.createEntityManager()
User user = entityManager.find(User.class, 0);
entityManager.getTransaction().begin();
entityManager.getTransaction().rollback();
entityManager.refresh(user);
这会在第四行抛出一个 IllegalArgumentException,表示“实体不受管理”。如果我将第三行更改为 .commit()
而不是 .rollback()
,一切似乎都正常。
这是怎么回事?我可以防止这种情况发生吗?
更新:@DataNucleus 将我引向 PersistenceContext。如何更改代码中的持久性上下文?
最佳答案
来自JSR-000317 Persistence Specification for Eval 2.0 Eval :
3.3.2 Transaction Rollback
For both transaction-scoped and extended persistence contexts, transaction rollback causes all pre-existing managed instances and removed instances [31] to become detached. The instances’ state will be the state of the instances at the point at which the transaction was rolled back. Transaction rollback typically causes the persistence context to be in an inconsistent state at the point of rollback. In particular, the state of version attributes and generated state (e.g., generated primary keys) may be inconsistent. Instances that were formerly managed by the persistence context (including new instances that were made persistent in that transaction) may therefore not be reusable in the same manner as other detached objects—for example, they may fail when passed to the merge operation. [32]
关于java - entityManager.getTransaction().rollback() 分离实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6743222/
我最近开始在 Google App Engine 上使用 JPA。在阅读一些示例时,我注意到对象的持久化方式存在一些变化。在一种情况下,我见过这样的事情: entityManager.getTrans
我正在使用 EclipseLink 2.3.0。我有一个从单元测试调用的方法(因此在容器之外,没有 JTA),如下所示: EntityManager em = /* get an entity man
![在此处输入图像描述][1] SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(
尝试将 xml 文件解析到 mysql 数据库时出现以下错误。数据库已创建。我不明白为什么它无法创建用户 错误代码 Console errors 驱动程序.java package DAO; impo
当我执行时: public void beginTransaction() { em.getTransaction().begin(); } 在以相同方式启动一个 Activity 事务后,我
我想通过调用存储过程在 ejb 方法中执行异步事务操作。当我调用方法时,出现以下错误: java.lang.IllegalStateException: A JTA EntityManager can
我有以下代码: EntityManagerFactory emf = Persistence.createEntityManagerFactory("test") EntityManager enti
如何在我的非 ejb 应用程序中使用以下代码。代码有效。 @Override public void saveItems(Collection items) { synchronized (e
在调用 session.gettransaction 之前,我是否必须确保它存在? 如果是这样,我如何检查 session 中是否有当前未提交的事务? 最佳答案 不,您不必检查。如果当前事务不存在,S
我正在使用 spring、oracle 和 jotm(在 tomcat 中)来使用 2PC 提交。下面是 Spring 配置。
这可能是一件微不足道的事情,但我希望得到一些帮助。 我得到: javax.ejb.EJBException: java.lang.IllegalStateException: Illegal to
我在一个使用 spring data 和 apache camel 的项目中工作,我们有 2 个数据库,Sql Server 和带有 JTA 的 Oracle。出现问题是因为我需要从一个大文件(大约
我想知道 是 session.getTransaction().commit();获取数据时在 hibernate 状态下需要 private List listEvents() {
所以在一个大的重构项目之后,我留下了这个异常并且不确定如何纠正它。它正在处理一些我没有编写的代码,我不熟悉它是如何工作的。还有其他问题处理此异常,但似乎没有一个适合我的情况。 使用 EntityMan
谁能解释两者之间的区别: @Resource UserTransaction objUserTransaction; 和 EntityManager.getTransaction(); 还有什么是容器
本文整理了Java中com.github.robozonky.common.remote.Zonky.getTransactions()方法的一些代码示例,展示了Zonky.getTransactio
我是 hibernate 初学者,我只想知道对象是否仅与 session.close() 分离,还是与 session.getTransaction().commit() 分离。因为我无法从另一个事务
我正在使用 Spring + JPA + Hibernate + EntityManager 与数据库对话。我收到“A JTA EntityManager cannot use getTransact
我正在使用 1.7.4和 4.0.1.RELEASE我的项目的版本。最近我将这两个版本升级到 1.8.9和 4.3.11.RELEASE . 我在我的项目中使用 JPA 存储库,当我尝试保存任何对象时
更新数据库时我应该更喜欢什么?这两种方法的优缺点是什么?我什么时候应该使用其中一种? public void disemployEmployee(Integer employeeId, Date en
我是一名优秀的程序员,十分优秀!