Управление транзакциями SQL Server через Springboot 3 и Hibernate 6JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Управление транзакциями SQL Server через Springboot 3 и Hibernate 6

Сообщение Anonymous »

Я перемещаю старое приложение Java Springboot-Base из версии 2.x.x в последнее v3.4.2 .
Это обновление заставило меня исправить несколько зависимостей, в частности:

Обновление с v5.x.x to v6.6.8-final Jakarta ee < /li>
< /ul>
Кроме того, в приложении (которое уже работает в производственной среде) использует SQLServer SP_GetApplock < /code> Хранильная процедура для выполнения некоторых замков во время выполнения. завернут эту хранимую процедуру внутри другой, только для управления возвращенным кодом состояния, определение ниже: < /p>

Код: Выделить всё

CREATE PROCEDURE sp_getapplock_wrapper @Resource NVARCHAR(255), @LockMode NVARCHAR(32), @LockTimeout as INT, @Result INT OUTPUT
AS
BEGIN
EXEC @Result = Sp_getapplock @Resource = @Resource, @LockMode = @LockMode, @LockTimeout = @LockTimeout;
END;
< /code>
После обновления приложения любое призыв к этой хранимой процедуре возвращает код ошибки -999 < /code>, предотвращая заблокирование базы данных.
Если я пытаюсь изменить @lockowner с «транзакции» на «сеанс», все работает нормально (так что это говорит о том, что задача должна быть на уровне транзакции). правильно открыт как на Java, так и на стороне базы данных: < /p>
[nio-8081-exec-1] o.s.orm.jpa.JpaTransactionManager        : Creating new transaction with name [com.extoxesses.poc.core.service.CoreService.startProcess]: PROPAGATION_REQUIRED,ISOLATION_SERIALIZABLE
[nio-8081-exec-1] .i.SessionFactoryImpl$SessionBuilderImpl : Opening Hibernate Session.  tenant=null
[nio-8081-exec-1] o.h.r.j.i.LogicalConnectionManagedImpl   : `hibernate.connection.provider_disables_autocommit` was enabled.  This setting should only be enabled when you are certain that the Connections given to Hibernate by the ConnectionProvider have auto-commit disabled.   Enabling this setting when the Connections do not have auto-commit disabled will lead to Hibernate executing SQL operations outside of any JDBC/SQL transaction.
[nio-8081-exec-1] org.hibernate.internal.SessionImpl       : Opened Session [42330797-b6ac-4444-b8ed-edddb2d47029] at timestamp: 1740480200789
[nio-8081-exec-1] o.s.orm.jpa.JpaTransactionManager        : Opened new EntityManager [SessionImpl(4729152PersistenceContext[entityKeys=[], collectionKeys=[]];ActionQueue[insertions=ExecutableList{size=0} updates=ExecutableList{size=0} deletions=ExecutableList{size=0} orphanRemovals=ExecutableList{size=0} collectionCreations=ExecutableList{size=0} collectionRemovals=ExecutableList{size=0} collectionUpdates=ExecutableList{size=0} collectionQueuedOps=ExecutableList{size=0} unresolvedInsertDependencies=null])] for JPA transaction
[nio-8081-exec-1] o.h.e.t.internal.TransactionImpl         : On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
[nio-8081-exec-1] o.h.e.t.internal.TransactionImpl         : begin
[nio-8081-exec-1] cResourceLocalTransactionCoordinatorImpl : ResourceLocalTransactionCoordinatorImpl#afterBeginCallback
[nio-8081-exec-1] o.s.orm.jpa.JpaTransactionManager        : Exposing JPA transaction as JDBC [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@71b08367]
< /code>
Вызов сохраненной процедуры является правильным: < /p>
[nio-8081-exec-1] c.e.poc.core.service.LockService         : Acquiring lock for id id
[nio-8081-exec-1] o.h.p.internal.ProcedureCallImpl         : Preparing procedure call : org.hibernate.sql.exec.internal.JdbcCallImpl@3b078a57
[nio-8081-exec-1] org.hibernate.SQL                        :
{call sp_getapplock_wrapper(?, ?, ?, ?)}
Hibernate:
{call sp_getapplock_wrapper(?, ?, ?, ?)}
[nio-8081-exec-1] o.h.r.j.i.ResourceRegistryStandardImpl   : Registering statement [HikariProxyCallableStatement@1877695894 wrapping sp_executesql SQL: null]
[nio-8081-exec-1] org.hibernate.orm.jdbc.bind              : binding parameter (1:VARCHAR) , прежде чем вызовать хранимую процедуру, сохраненная процедура успешно завершается. Кажется, что в управлении транзакциями есть своего рода «лень».> 

Подробнее здесь: [url]https://stackoverflow.com/questions/79466493/sql-server-transaction-management-via-springboot-3-and-hibernate-6[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Управление транзакциями SQL Server через Springboot 3 и Hibernate 6
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Управление транзакциями SQL Server через Springboot 3 и Hibernate 6
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Управление транзакциями SQLServer через Springboot 3 и Hibernate 6
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Spring Управление транзакциями @Transactional поведение
    Anonymous » » в форуме JAVA
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • Правильное управление транзакциями базы данных между службами - ASP.NET Core, EF Core
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»