尝试使用Java将数据插入数据库时​​出现TransactionRequiredException

时间:2018-08-22 10:13:37

标签: java postgresql jpa

我正在尝试使用类似于以下代码的数据将数据插入数据库:

Query query=em.createNativeQuery("insert into tab1 (col1, col2) values ('val1', 'val2')");
int result=query.executeUpdate();

,但会引发TransactionRequiredException。那是什么?

2 个答案:

答案 0 :(得分:0)

异常是不言自明的,并且在堆栈溢出时已经给出了多种解决方案。

在执行任何插入/更新/删除操作之前,您需要启动会话(事务)。 如果使用spring,则可以使用@Transactional属性,否则以编程方式创建/关闭事务。

请检查。 Transaction required exception JPA / Spring

答案 1 :(得分:0)

我最终发现我在课堂上有一个像这样的财产:

@Resource
javax.transaction.UserTransaction userTransaction;

所以执行插入的正确方法是:

userTransaction.begin();
Query query=em.createNativeQuery("insert into tab1 (col1, col2) values ('val1', 'val2')");
int result=query.executeUpdate();
userTransaction.commit();