Hibernate INSERT 未出现在数据库中 "JDBC transaction marked for rollback-only"
Hibernate INSERT not appearing in database "JDBC transaction marked for rollback-only"
我正在处理一个项目的数据库部分,该项目在 Java SE 中使用 DeltaSpike 和 Hibernate。
所有 SELECT
语句都有效,但是没有 INSERT
语句出现在数据库中。没有警告、错误或异常。
我查看了 Hibernate 的日志并发现了以下内容:
[DEBUG] [05/05 00:52:16] [org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl] JDBC transaction marked for rollback-only
我已经尝试添加来自 javax.transaction
and org.apache.deltaspike.jpa.api.transaction
的 @Transactional
注释,以及更改 persistence.xml
中的 autocommit
设置。
我怎样才能让它停止尝试回滚事务?
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" 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_2.xsd">
<persistence-unit name="primary">
<properties>
<property name="hibernate.connection.autocommit" value="false"/>
<property name="hibernate.hbm2ddl.auto" value="validate"/>
<!-- Omitted for Brevity -->
</properties>
</persistence-unit>
</persistence>
ExampleRepository.java
@Repository(forEntity = ExampleData.class)
public interface ExampleRepository extends EntityRepository<ExampleData, Long> {
}
ExampleListener.java
@Singleton
public class ExampleListener extends ExampleAdapter {
private final ExampleRepository emoteRepo;
@Inject
public ExampleListener(ExampleRepository exampleRepo) {
this.exampleRepo = Objects.requireNonNull(exampleRepo);
}
@Override
public void onExample(ExampleEvent event) {
// Omitted for Brevity
ExampleData exampleData = new ExampleData(exampleId, parentId);
exampleRepo.save(exampleData);
}
}
}
我正在处理一个项目的数据库部分,该项目在 Java SE 中使用 DeltaSpike 和 Hibernate。
所有 SELECT
语句都有效,但是没有 INSERT
语句出现在数据库中。没有警告、错误或异常。
我查看了 Hibernate 的日志并发现了以下内容:
[DEBUG] [05/05 00:52:16] [org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl] JDBC transaction marked for rollback-only
我已经尝试添加来自 javax.transaction
and org.apache.deltaspike.jpa.api.transaction
的 @Transactional
注释,以及更改 persistence.xml
中的 autocommit
设置。
我怎样才能让它停止尝试回滚事务?
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" 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_2.xsd">
<persistence-unit name="primary">
<properties>
<property name="hibernate.connection.autocommit" value="false"/>
<property name="hibernate.hbm2ddl.auto" value="validate"/>
<!-- Omitted for Brevity -->
</properties>
</persistence-unit>
</persistence>
ExampleRepository.java
@Repository(forEntity = ExampleData.class)
public interface ExampleRepository extends EntityRepository<ExampleData, Long> {
}
ExampleListener.java
@Singleton
public class ExampleListener extends ExampleAdapter {
private final ExampleRepository emoteRepo;
@Inject
public ExampleListener(ExampleRepository exampleRepo) {
this.exampleRepo = Objects.requireNonNull(exampleRepo);
}
@Override
public void onExample(ExampleEvent event) {
// Omitted for Brevity
ExampleData exampleData = new ExampleData(exampleId, parentId);
exampleRepo.save(exampleData);
}
}
}