/ / JTASessionContext sendo usado com JDBCTransactionFactory; auto-flush não funcionará corretamente com getCurrentSession () - java, hibernate, jdbc, jta

JTASessionContext sendo usado com JDBCTransactionFactory; auto-flush não funcionará corretamente com getCurrentSession () - java, hibernate, jdbc, jta

Usando o hibernate no meu aplicativo, e toda vez que faço uma transação, recebo esse aviso. É spam meus logs.

JTASessionContext being used with JDBCTransactionFactory; auto-flush will not operate correctly with getCurrentSession()

Eu acho que é causado por hibernate.current_session_context_classpropriedade.

<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
<property name="hibernate.connection.pool_size">5</property>
<property name="show_sql">false</property>
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="hibernate.current_session_context_class">jta</property>

<mapping class="foo.bar.Class1" />
<mapping class="foo.bar.Class2" />
<mapping class="foo.bar.Class3" />
<mapping class="foo.bar.Class4" />
<mapping class="foo.bar.Class5" />
</session-factory>

É algo que eu deveria estar preocupado? Se não, como posso impedir que o aviso apareça?

Respostas:

3 para resposta № 1

Tanto quanto eu sei, não é possívelconfigure o Hibernate JPA com suporte a JTA usando o Spring, a menos que você forneça um persistence.xml para configurar a fonte de dados como JTA. Talvez algo assim ajude você a se livrar do aviso:

<?xml version="1.0" encoding="utf-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="something" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>blah blah</jta-data-source>
<properties>
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.current_session_context_class" value="jta"/>
<property name="hibernate.transaction.manager_lookup_class" value="blah blah"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
<property name="hibernate.connection.release_mode" value="after_statement"/>
</properties>
</persistence-unit>
</persistence>

Eu também sugiro que você desabilite allowLocalTransactions para que seu código seja executado como transacional o tempo todo.