Spring @Transactional, приводящий к нарушению уникального ограничения даже перед вставкой в ​​БД - PullRequest
0 голосов
/ 19 сентября 2019

Я работаю над Spring-boot (Spring-DATA) и hibernate.Я пытаюсь вставить в свои таблицы и добавил @Transactional для отката, если возникнет какая-либо проблема.

У меня есть класс, который заботится о сохранении в БД.

PersistToDB.java

@Transactional
public void insertToTables() {
     //Insert into Table1
     //Insert into Table2 (has a unique constraint on a column)
    //Insert into Table3
}

и я вызываю вышеуказанный класс из моего класса обслуживания, как показано ниже:

public class Service {
    persistToDB.insertToTables();
}

При выполнении этого Hibernate просто приводит к Constraint violation Exception for Uniuqe Key, даже если в Таблице 2 нет записи сэто значение столбца и откатывает всю транзакцию.Я не уверен, в чем здесь проблема.Любые предложения полезны.

Исключение:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Violation of UNIQUE KEY constraint 'UK1wyjkexd8xlc0e5r0jcim6c5q'. Cannot insert duplicate key in object 'dbo.table2'. The duplicate key value is (value).
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:256) ~[mssql-jdbc-7.2.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1621) ~[mssql-jdbc-7.2.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:592) ~[mssql-jdbc-7.2.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:522) ~[mssql-jdbc-7.2.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7194) ~[mssql-jdbc-7.2.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2930) ~[mssql-jdbc-7.2.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:248) ~[mssql-jdbc-7.2.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:223) ~[mssql-jdbc-7.2.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:471) ~[mssql-jdbc-7.2.1.jre8.jar:na]
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-3.2.0.jar:na]
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
    ... 154 common frames omitted
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...