Re: JPA + Postgres = autocommit? - Mailing list pgsql-jdbc

From Lachezar Dobrev
Subject Re: JPA + Postgres = autocommit?
Date
Msg-id CA+xsaB3tg5dvdftMg2y-kofgJhnxTVGWg444fY7xWOmaG+CVWQ@mail.gmail.com
Whole thread Raw
In response to Re: JPA + Postgres = autocommit?  ("Davygora, Yuriy" <Yuriy.Davygora@sulzer.de>)
Responses Re: JPA + Postgres = autocommit?
Re: JPA + Postgres = autocommit?
List pgsql-jdbc
  We've been using Glassfish 3 and 4 with PostgreSQL with JPA (Eclipse-Link or Hibernate) successfully for years.
  When declaring the data source we declare a JDBC Connection Pool, and specify org.postgresql.ds.PGConnectionPoolDataSource as the Datasource Classname.
  The persistence.xml specifies transaction-type="JTA" and has <jta-data-source> with some well-known name (that you use to declare the JDBC Resource), no properties commonly.

  Also check if your session EJBs are annotated with the @TransactionManagement(TransactionManagementType.CONTAINER) and have proper @TransactionAttribute(TransactionAttributeType.REQUIRED) on the methods that perform changes in the data base. Defaults or not, I've learned not to assume the defaults…

  It will not hurt if you show code, although I can understand the NDA/Customer/Corporate code limitations.

2016-07-26 14:51 GMT+03:00 Davygora, Yuriy <Yuriy.Davygora@sulzer.de>:

 

  Hello Vladimir,

 

  we do use a Payara data source, in that we configure the connection in Payara’s domain.xml. And no, it does not work, at least in the release that we are using (4.1.1.161). If I, however, in my code do the following:

 

 Connection con = entityManager.unwrap(Connection.class);

  con.setAutoCommit(false);

 

  then everything works fine.

 

  This is why I said in my mail, that this might be actually a Payara bug.

 

  Best regards,

  Yuriy

 

Von: Vladimir Sitnikov [mailto:sitnikov.vladimir@gmail.com]
Gesendet: Dienstag, 26. Juli 2016 13:22
An: Davygora, Yuriy <Yuriy.Davygora@sulzer.de>
Cc: List <pgsql-jdbc@postgresql.org>
Betreff: Re: [JDBC] JPA + Postgres = autocommit?

 

 

Yuriy>1.       In PgConnection.java, the autocommit is initially set to true in the declaration (private boolean autocommit = true). In the constructor of the PgConnection class, several options are checked (PGProperty), but there is none that has to do with autocommit. Thus, unless, the client explicitely calls setAutoCommit(false), it will remain true.

 

Just for the reference, the specification (see Connection#setAutoCommit javadoc) states that "By default, new connections are in auto-commit mode"


Yuriy>We are using a JTA data source and the transactions are managed by the JEE container

Why don't you use Payara's data source then?
It should solve the problem as Payara seems to have some setAutoCommit logic: https://github.com/payara/Payara/search?utf8=%E2%9C%93&q=setautocommit

 

Vladimir


Sulzer GmbH
Geschäftsführende Gesellschafter: Dr. Johann Sulzer, Albert Euba, Thomas Kahabka
Geschäftsführer: Angelika Rudolph, Harald Lothspeich
Sitz und Registergericht: Stuttgart HRB 7608
http://www.sulzer.de


pgsql-jdbc by date:

Previous
From: Lachezar Dobrev
Date:
Subject: Re: postgresql-jdbc 9.4-1209 src tarball issue
Next
From: Lachezar Dobrev
Date:
Subject: Re: postgresql-jdbc 9.4-1209 src tarball issue