Я работаю над кодом базы данных для проекта, который использует DeltaSpike и Hibernate в Java SE.
Кажется, что все запросы SELECT
работают, как задумано, однако оказалось, что запросов INSERT
нет фактически появляются в базе данных, несмотря на то, что в консоли не регистрируются предупреждения, ошибки или исключения.
Я не отфильтровал журналы, которые содержат следующее сообщение:
[DEBUG] [05/05 00:52:16] [org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl] JDBC transaction marked for rollback-only
I ' мы пробовали добавить аннотацию @Transactional
из javax.transaction
и org.apache.deltaspike.jpa.api.transaction
, а также изменить настройку autocommit
в persistence.xml
.
Как я могу заставить это прекратить попытки отката транзакции ?
настойчивость. 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>
EmoteRepository. java
@Repository(forEntity = EmoteData.class)
public interface EmoteRepository extends EntityRepository<EmoteData, Long> {
}
EmoteListener. java
@Singleton
public class EmoteListener extends ListenerAdapter {
private final EmoteRepository emoteRepo;
@Inject
public EmoteListener(EmoteRepository emoteRepo) {
this.emoteRepo = Objects.requireNonNull(emoteRepo);
}
@Override
public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
// Omitted for Brevity
EmoteData emoteData = new EmoteData(emoteId, guildId);
emoteRepo.save(emoteData);
}
}
}