我正在尝试使用类似于以下代码的数据将数据插入数据库:
Query query=em.createNativeQuery("insert into tab1 (col1, col2) values ('val1', 'val2')");
int result=query.executeUpdate();
,但会引发TransactionRequiredException。那是什么?
答案 0 :(得分:0)
异常是不言自明的,并且在堆栈溢出时已经给出了多种解决方案。
在执行任何插入/更新/删除操作之前,您需要启动会话(事务)。 如果使用spring,则可以使用@Transactional属性,否则以编程方式创建/关闭事务。
答案 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();