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);
        }
    }
}

问题是在项目中,@Entity and @Table使用不正确。

该项目具有以下内容,但生成的查询被称为 ExampleTable,而不是预期的 example

@Entity(name = "example")
@Table
public ExampleTable {

}

解决办法是也改一下:

@Entity
@Table(name = "example")
public ExampleTable {

}