How do you call this method?
Oleg Mayevskiy wrote:
> yes the transaction commits, and the business method exits too, but
> there are no update or insert statements in the transaction.
> also if i add an em.flush() at the end of the business method, then
> update statements are done.
>
> Am 06.08.2010 21:43, schrieb Marina Vatkina:
>> Do you wait until transaction commits, or do you check before the
>> business method exits?
>>
>>
>> Oleg Mayevskiy wrote:
>>> I am watching database statement logs, also tables that should be
>>> filled with new data. Additional i see all statements produced by
>>> hibernate in java logs, because of hibernate.show_sql property.
>>>
>>> Am 06.08.2010 20:58, schrieb Marina Vatkina:
>>>> Hi Oleg,
>>>>
>>>> How do you check that nothing is flushed to the database?
>>>>
>>>> -marina
>>>>
>>>> Oleg Mayevskiy wrote:
>>>>> Hi.
>>>>>
>>>>> I have a question about a following abstract problem.
>>>>>
>>>>> i have a stateless bean like this:
>>>>>
>>>>> @Stateless
>>>>>
>>>>> Public class MyBean implements MyLocalInterface {
>>>>>
>>>>> ….
>>>>>
>>>>> @PersistenceContext(unitName = "ReadWritePU")
>>>>> private EntityManager em;
>>>>>
>>>>> ….
>>>>>
>>>>> @Override
>>>>>
>>>>> public void execute() {
>>>>>
>>>>> …
>>>>>
>>>>> em.find(…) (some finds)
>>>>>
>>>>> …
>>>>>
>>>>> em.merge(…) (some merges)
>>>>>
>>>>> …
>>>>>
>>>>> em.persist(…) (some persists)
>>>>>
>>>>> }
>>>>>
>>>>> but what happens on db is:
>>>>>
>>>>> BEGIN
>>>>> some SELECTs(from some finds)
>>>>> ....
>>>>> COMMIT
>>>>>
>>>>> so what happens is, entity manager does not flush the objects from
>>>>> merge and persist methods, no updates or inserts are done to the
>>>>> database. Also no Runtime Exceptions are thrown.
>>>>>
>>>>> But if i put an em.flush() at the end of the business method,
>>>>> every thing is ok and new objects are flushed to the db.
>>>>>
>>>>> What could be a reason for this behavior?
>>>>>
>>>>> I tried to change non-transactional-connections from false to
>>>>> true, the transaction-isolation-level from serializable to
>>>>> read-commited
>>>>> and is-isolation-level-guaranteed from true to false, but it did
>>>>> not help.
>>>>>
>>>>>
>>>>> Here is my whole persistence.xml
>>>>>
>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>
>>>>> <persistence version="1.0"
>>>>> xmlns="http://java.sun.com/xml/ns/persistence"
>>>>> <http://java.sun.com/xml/ns/persistence>
>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>> <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"
>>>>> <http://java.sun.com/xml/ns/persistencehttp:/java.sun.com/xml/ns/persistence/persistence_1_0.xsd>>
>>>>>
>>>>>
>>>>> <persistence-unit name="ReadWritePU" transaction-type="JTA">
>>>>>
>>>>> <provider>org.hibernate.ejb.HibernatePersistence</provider>
>>>>>
>>>>> <jta-data-source>jdbc/Postgres</jta-data-source>
>>>>>
>>>>> <exclude-unlisted-classes>false</exclude-unlisted-classes>
>>>>>
>>>>> <properties>
>>>>>
>>>>> <property name="hibernate.show_sql" value="true"/>
>>>>>
>>>>> <property name="hibernate.dialect"
>>>>> value="org.hibernate.dialect.PostgreSQLDialect"/>
>>>>>
>>>>> <property name="hibernate.order_updates" value="true"/>
>>>>>
>>>>> <property name="hibernate.transaction.manager_lookup_class"
>>>>> value="org.hibernate.transaction.SunONETransactionManagerLookup"/>
>>>>>
>>>>> <property name="hibernate.transaction.factory_class"
>>>>> value="org.hibernate.transaction.CMTTransactionFactory"/>
>>>>>
>>>>> </properties>
>>>>>
>>>>> </persistence-unit>
>>>>>
>>>>> <persistence-unit name="ReadOnlyPU" transaction-type="JTA">
>>>>>
>>>>> <provider>org.hibernate.ejb.HibernatePersistence</provider>
>>>>>
>>>>> <jta-data-source>jdbc/PostgresReadonly</jta-data-source>
>>>>>
>>>>> <exclude-unlisted-classes>false</exclude-unlisted-classes>
>>>>>
>>>>> <properties>
>>>>>
>>>>> <property name="hibernate.dialect"
>>>>> value="org.hibernate.dialect.PostgreSQLDialect"/>
>>>>>
>>>>> <property name="hibernate.show_sql" value="true"/>
>>>>>
>>>>> <property name="hibernate.transaction.manager_lookup_class"
>>>>> value="org.hibernate.transaction.SunONETransactionManagerLookup"/>
>>>>>
>>>>> <property name="hibernate.transaction.factory_class"
>>>>> value="org.hibernate.transaction.CMTTransactionFactory"/>
>>>>>
>>>>> </properties>
>>>>>
>>>>> </persistence-unit>
>>>>>
>>>>> </persistence>
>>>>>
>>>>> And here are my connection pool settings from the domain.xml
>>>>>
>>>>> <jdbc-connection-pool allow-non-component-callers="true"
>>>>> associate-with-thread="false"
>>>>> connection-creation-retry-attempts="0"
>>>>> connection-creation-retry-interval-in-seconds="10"
>>>>> connection-leak-reclaim="false"
>>>>> connection-leak-timeout-in-seconds="0"
>>>>> connection-validation-method="table"
>>>>> datasource-classname="org.postgresql.ds.PGConnectionPoolDataSource"
>>>>> fail-all-connections="false" idle-timeout-in-seconds="300"
>>>>> is-connection-validation-required="true"
>>>>> is-isolation-level-guaranteed="true"
>>>>> lazy-connection-association="false"
>>>>> lazy-connection-enlistment="false" match-connections="false"
>>>>> max-connection-usage-count="0" max-pool-size="32"
>>>>> max-wait-time-in-millis="60000" name="PostgresConnectionPool"
>>>>> non-transactional-connections="false" pool-resize-quantity="2"
>>>>> res-type="javax.sql.ConnectionPoolDataSource"
>>>>> statement-timeout-in-seconds="-1" steady-pool-size="8"
>>>>> transaction-isolation-level="serializable"
>>>>> validate-atmost-once-period-in-seconds="0"
>>>>> validation-table-name="pg_type" wrap-jdbc-objects="false">
>>>>>
>>>>> <property name="Password" value="********"/>
>>>>>
>>>>> <property name="PrepareThreshold" value="0"/>
>>>>>
>>>>> <property name="ServerName" value="******"/>
>>>>>
>>>>> <property name="DatabaseName" value="*****"/>
>>>>>
>>>>> <property name="LoginTimeout" value="0"/>
>>>>>
>>>>> <property name="User" value="*********"/>
>>>>>
>>>>> <property name="PortNumber" value="*******"/>
>>>>>
>>>>> <property name="Ssl" value="true"/>
>>>>>
>>>>> <property name="sslfactory"
>>>>> value="org.postgresql.ssl.NonValidatingFactory"/>
>>>>>
>>>>> </jdbc-connection-pool>
>>>>>
>>>>>
>>>>> Thank you very much
>>>>>
>>>>> Oleg Mayevskiy
>>>
>