小编k-s*_*ver的帖子

没有事务的 JPA 更新查询 - 事务是强制性的吗?

我正在尝试使用 JPA 通过本机查询进行插入,但我不想创建事务:

Query query = em.createNativeQuery("INSERT INTO person (id, firstname, lastname) VALUES ('1','Ronnie','Dio')");
int count = query.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

这最终会出现 TransactionRequiredException:

javax.persistence.TransactionRequiredException: Executing an update/delete query

at org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:99)
Run Code Online (Sandbox Code Playgroud)

但是,如果我打开 Hibernate 会话并执行相同的查询 - 它会起作用:

Session session = em.unwrap(Session.class);
Query query = session.createSQLQuery("INSERT INTO person (id, firstname, lastname) VALUES ('1','Ronnie','Dio')");
int count = query.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

所以我的问题是 - 我在第一个示例中做错了什么?在 JPA 中执行插入/更新/删除查询真的需要事务吗?如果是,是否有任何明确指定的文档链接?如果不是——我做错了什么?

java hibernate jpa transactions

4
推荐指数
1
解决办法
7899
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1

transactions ×1