Вызов save () для репозитория не вставляется в таблицу и выдает org.springframework.orm.jpa.JpaSystemException - PullRequest
0 голосов
/ 11 февраля 2020

Я создал Исходящие и после установки какого-то атрибута сохранил в репозитории. Это мой код создания и сохранения исходящих сообщений:

Outbox outbox = new Outbox();
outbox.setUserId(555);
......... // others attribute settings
......... // others attribute settings
outboxRepository.save(outbox);

outboxRepository относится к типу OutboxRepository, который был подключен ранее.

Это мой класс исходящих сообщений:

@Entity
@Table(name = "outbox_outbox")
@Getter
@Setter
public class Outbox implements Serializable {

    @Id
    private int id;
    @Column(name = "created")
    private Date created;
    @Column(name = "modified")
    private Date modified;
    @Column(name = "user_id")
    private int userId;
}

А это мой репозиторий:

public interface OutboxRepository extends JpaRepository<Outbox, Integer> {

}

В настоящее время интерфейс пуст. Там нет определения метода. Поскольку мне нужно только сохранить () сейчас.

Когда я запускаю код, я получаю этот журнал с исключением:

2020-02-11 08:45:30.059 DEBUG 8 --- [Thread-5] stomAnnotationTransactionAttributeSource : Adding transactional method 'save' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
2020-02-11 08:45:30.059 DEBUG 8 --- [Thread-5] o.s.orm.jpa.JpaTransactionManager        : Creating new transaction with name [org.springframework.data.jpa.repository.support.SimpleJpaRepository.save]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
2020-02-11 08:45:30.059 DEBUG 8 --- [Thread-5] o.s.orm.jpa.JpaTransactionManager        : Opened new EntityManager [SessionImpl(861577479<open>)] for JPA transaction
2020-02-11 08:45:30.060 DEBUG 8 --- [Thread-5] o.h.e.t.internal.TransactionImpl         : On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2020-02-11 08:45:30.060 DEBUG 8 --- [Thread-5] o.h.e.t.internal.TransactionImpl         : begin
2020-02-11 08:45:30.060 DEBUG 8 --- [Thread-5] org.postgresql.jdbc.PgConnection         :   setAutoCommit = false
2020-02-11 08:45:30.060 DEBUG 8 --- [Thread-5] o.s.orm.jpa.JpaTransactionManager        : Exposing JPA transaction as JDBC [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@68314f1d]
2020-02-11 08:45:30.071 DEBUG 8 --- [Thread-5] o.h.e.i.AbstractSaveEventListener        : Generated identifier: 0, using strategy: org.hibernate.id.Assigned
2020-02-11 08:45:30.079 DEBUG 8 --- [Thread-5] o.s.orm.jpa.JpaTransactionManager        : Initiating transaction commit
2020-02-11 08:45:30.079 DEBUG 8 --- [Thread-5] o.s.orm.jpa.JpaTransactionManager        : Committing JPA transaction on EntityManager [SessionImpl(861577479<open>)]
2020-02-11 08:45:30.079 DEBUG 8 --- [Thread-5] o.h.e.t.internal.TransactionImpl         : committing
2020-02-11 08:45:30.080 DEBUG 8 --- [Thread-5] o.h.e.i.AbstractFlushingEventListener    : Processing flush-time cascades
2020-02-11 08:45:30.080 DEBUG 8 --- [Thread-5] o.h.e.i.AbstractFlushingEventListener    : Dirty checking collections
2020-02-11 08:45:30.085 DEBUG 8 --- [Thread-5] o.h.e.i.AbstractFlushingEventListener    : Flushed: 1 insertions, 0 updates, 0 deletions to 1 objects
2020-02-11 08:45:30.086 DEBUG 8 --- [Thread-5] o.h.e.i.AbstractFlushingEventListener    : Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
2020-02-11 08:45:30.087 DEBUG 8 --- [Thread-5] o.hibernate.internal.util.EntityPrinter  : Listing entities:
2020-02-11 08:45:30.088 DEBUG 8 --- [Thread-5] o.hibernate.internal.util.EntityPrinter  : com.smsc.core.entity.Outbox{scheduleTime=Tue Feb 11 08:45:30 UTC 2020, writeTime=Tue Feb 11 08:45:30 UTC 2020, created=Tue Feb 11 08:45:30 UTC 2020, isUnicode=1, npi=555, retryCount=555, smsCount=1, destMobileNumber=01670484066, message=testing..., userId=555, uuid=a4ef4108-e15e-4eaa-9e86-6ce411980e8b, ton=555, operatorPrefix=0, countryCode=555, dataCoding=555, modified=Tue Feb 11 08:45:30 UTC 2020, sentTime=null, sourceMobileNumber=008809612345678, id=0, inboxId=1, remarks=test remark., esmClass=555, mask=01712345678, status=PROCESSING}
2020-02-11 08:45:30.092 DEBUG 8 --- [Thread-5] org.hibernate.SQL                        : insert into outbox_outbox (created, modified, user_id, id) values (?, ?, ?, ?)
2020-02-11 08:45:30.110 DEBUG 8 --- [Thread-5] o.h.e.t.internal.TransactionImpl         : rolling back
2020-02-11 08:45:30.118 DEBUG 8 --- [Thread-5] o.s.orm.jpa.JpaTransactionManager        : Initiating transaction rollback after commit exception

org.springframework.orm.jpa.JpaSystemException: Unable to commit against JDBC Connection; nested exception is org.hibernate.TransactionException: Unable to commit against JDBC Connection
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:353) ~[spring-orm-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:255) ~[spring-orm-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:538) ~[spring-orm-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:744) [spring-tx-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:712) [spring-tx-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:631) [spring-tx-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:385) [spring-tx-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99) [spring-tx-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) [spring-tx-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:178) [spring-data-jpa-2.2.1.RELEASE.jar!/:2.2.1.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) [spring-aop-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) [spring-aop-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    at com.sun.proxy.$Proxy87.save(Unknown Source) [na:na]
    at com.smsc.core.service.ThreadService.saveToOutboxRepository(ThreadService.java:113) [classes!/:1.0]
    at com.smsc.core.service.ThreadService.completeTaskWithThisContent(ThreadService.java:105) [classes!/:1.0]
    at com.smsc.core.service.ThreadService.lambda$null$1(ThreadService.java:77) [classes!/:1.0]
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:1.8.0_111]
    at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:373) ~[na:1.8.0_111]
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[na:1.8.0_111]
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) ~[na:1.8.0_111]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_111]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_111]
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[na:1.8.0_111]
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:1.8.0_111]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_111]
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) ~[na:1.8.0_111]
    at com.smsc.core.service.ThreadService.lambda$run$2(ThreadService.java:77) [classes!/:1.0]
    at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_111]
Caused by: org.hibernate.TransactionException: Unable to commit against JDBC Connection
    at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.commit(AbstractLogicalConnectionImplementor.java:87) ~[hibernate-core-5.4.8.Final.jar!/:5.4.8.Final]
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:282) ~[hibernate-core-5.4.8.Final.jar!/:5.4.8.Final]
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:101) ~[hibernate-core-5.4.8.Final.jar!/:5.4.8.Final]
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:534) ~[spring-orm-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
    ... 29 common frames omitted
Caused by: org.postgresql.util.PSQLException: ERROR: insert or update on table "outbox_outbox" violates foreign key constraint "outbox_outbox_user_id_5a5390a1_fk_users_user_id"
  Detail: Key (user_id)=(555) is not present in table "users_user".
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2497) ~[postgresql-42.2.8.jar!/:42.2.8]
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2233) ~[postgresql-42.2.8.jar!/:42.2.8]
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:310) ~[postgresql-42.2.8.jar!/:42.2.8]
    at org.postgresql.jdbc.PgConnection.executeTransactionCommand(PgConnection.java:754) ~[postgresql-42.2.8.jar!/:42.2.8]
    at org.postgresql.jdbc.PgConnection.commit(PgConnection.java:776) ~[postgresql-42.2.8.jar!/:42.2.8]
    at com.zaxxer.hikari.pool.ProxyConnection.commit(ProxyConnection.java:366) ~[HikariCP-3.4.1.jar!/:na]
    at com.zaxxer.hikari.pool.HikariProxyConnection.commit(HikariProxyConnection.java) ~[HikariCP-3.4.1.jar!/:na]
    at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.commit(AbstractLogicalConnectionImplementor.java:81) ~[hibernate-core-5.4.8.Final.jar!/:5.4.8.Final]
    ... 32 common frames omitted

1 Ответ

0 голосов
/ 12 февраля 2020

Я наконец-то получил ошибку ... Было ограничение внешнего ключа, например:

 "outbox_outbox_user_id_5a5390a1_fk_users_user_id" FOREIGN KEY (user_id) REFERENCES users_user(id) DEFERRABLE INITIALLY DEFERRED

Но когда я вставлял данные, я вставлял user_id с фиктивной (цель теста), которая создавал проблему. Я просто изменил код на ожидаемый идентификатор пользователя, и теперь данные вставляются. Спасибо за вашу помощь, ребята.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...