- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个接受 POST 请求的 servlet,并且我正在尝试使用请求的参数来构建并保留实体类的实例。
这是我的 servlet:
public class TheServlet extends HttpServlet {
@PersistenceContext(unitName="unit1")
private EntityManager entityManager;
@Resource
private UserTransaction utx;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// parse request parameters
// ...
// create and persist object based on the parameters
createInstance(parsedParameters);
}
private Long createInstance(ParsedParams initData) {
MyObj instance = new MyObj(initData);
try {
utx.begin();
entityManager.persist(instance);
entityManager.flush(instance);
utx.commit();
} catch (Exception e) {
throw new RuntimeException(e);
}
return instance.getId();
}
}
这是日志中的异常:
Caused by: javax.persistence.TransactionRequiredException: no transaction is in progress
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.checkTransactionNeeded(AbstractEntityManagerImpl.java:1136)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:1297)
at org.jboss.as.jpa.container.AbstractEntityManager.flush(AbstractEntityManager.java:459)
at org.mypackagename.TheServlet.createInstance(TheServlet.java:122)
... 44 more
就在异常之前,我在日志中看到了以下内容:
19:50:10,222 INFO [stdout] (default task-2) Hibernate:
19:50:10,223 INFO [stdout] (default task-2) select
19:50:10,223 INFO [stdout] (default task-2) MY_OBJ_SEQ.nextval
19:50:10,223 INFO [stdout] (default task-2) from
19:50:10,223 INFO [stdout] (default task-2) dual
如果我检查数据库,序列的 nextval 确实已被使用。但映射到实体类的表仍然是空的。如果我删除 flush()
调用,我不会收到异常,但仍然会选择序列值并且不会在表中插入任何内容。
我使用的是 JBoss EAP 7,并且已将数据源的 jta
属性设置为 true。
这是我的 persistence.xml
文件:
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="unit1" transaction-type="JTA">
<jta-data-source>java:jboss/OracleDS</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform"/>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
</properties>
</persistence-unit>
</persistence>
可能是什么问题?
最佳答案
看来我只需要在方法中添加 @Transactional 注释即可。
关于java - 在 UserTransaction 内刷新实体管理器时出现 TransactionRequiredException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49180764/
我在spring事务中遇到了一个奇怪的问题。我的应用程序使用带有 EJB 的 Spring。 EJB 还调用带有 @Transaction 注释的 Spring 服务类。我使用 Spring JtaT
我在 tomcat 7 中运行我的应用程序时得到以下堆栈跟踪。相同的应用程序在 Weblogic AS 中运行良好。 15:31:48.896 [localhost-startStop-1] DEBU
我有一个带有 bean 管理事务的无状态 bean,以及一个像这样的方法: @Stateless @TransactionManagement(TransactionManagementType.BE
在下面的代码中,我尝试强制特定 bean 的事务超时,将其事务时间设置为短于该方法完成所需的时间。 超时设置为3秒,该方法完成所需的时间为5秒。 我正在使用可移植解决方案,它指的是 BMT 和使用 s
我有 Restful Webservice 实现。我在哪里通过注入(inject) @Resource 使用 UserTransaction 对象维护事务。而且我可以看到 UserTransactio
static void clean() throws Exception { final UserTransaction tx = InitialContext.doLookup("UserTra
这是一个学术问题;我没有与此相关的损坏代码。我只是想扩大我对幕后发生的事情的理解。 我在 JPA DAO 中为典型的 JSF Web 应用程序使用的代码模式(从书籍和教程中复制)基本上是这样的: pu
Java中有一段代码(一个循环)使用UserTransaction用于处理交易。 userTransaction 对象在循环之前声明,该对象声明为, private javax.ejb.Session
我有这门课: @RunWith(Arquillian.class) public class myIT { @Inject private UserTransaction utx;
我正在尝试实现两阶段原子提交或回滚模式。步骤是: 读取数据库并填充 UI 表单 在表单中输入更改,提交更新和应用程序级别验证 执行两个操作之一 a.在一个事务中提交多个更改b.回滚多个更改以放弃 这些
我有一个用于管理用户信息的 mySQL 数据库,我正在为我的 mySQL 数据库使用 JTA 数据源,这是 persistence.xml 的样子: java:/SensorCl
我在开发一个多模块 maven 应用程序并且 weblogic 已经在生产中。堆栈是: Tomcat 8.5 PostGre 9.6 hibernate 4.3.8 Spring 4.1.5 Spri
我有一个接受 POST 请求的 servlet,并且我正在尝试使用请求的参数来构建并保留实体类的实例。 这是我的 servlet: public class TheServlet extends Ht
标题说明了一切:UserTransaction 之间有什么区别?和一个 EntityTransaction ? 我的初步理解是 UserTransaction 在需要 JTA 时使用(例如,对多个事物
UserTransaction.getStatus() 方法总是返回值 '6',即使在执行回滚或提交之后也是如此。无法理解为什么状态没有改变。有人可以指出这里有什么问题吗? 我正在使用 WAS 6.1
为了在没有 Java EE 容器的情况下尝试 Java SE 中的声明式事务管理,我只是将 Glassfish 附带的事务 Servlet 示例转换为 Java SE。请参阅原始 Servlet 和随
需要帮助解决以下问题。 背景:我在独立应用程序中使用 OpenJPA 和 spring 3.x 从 db2 数据库检索数据。我不需要事务管理,因为我的要求只是从数据库读取数据。 请在我的 spring
以下代码中 ut 实例的重用是否正确? UserTransaction ut = (UserTransaction)ctx.lookup("java:comp/UserTransaction");
我已经阅读了 JTA JSR 一些时间,但我仍然不明白到底应该由谁来提供 UserTransaction 和 TransactionManager 接口(interface)的实现? JTA规范的内容
在 Wildfly 10:为什么我对 java:jboss/UserTransaction 和 java:/TransactionManager 有两种不同的 jndi 命名约定。看了 UserTra
我是一名优秀的程序员,十分优秀!