Re: JPA + Postgres = autocommit?

From: Lachezar Dobrev <l(dot)dobrev(at)gmail(dot)com>
To: "Davygora, Yuriy" <Yuriy(dot)Davygora(at)sulzer(dot)de>
Cc: Vladimir Sitnikov <sitnikov(dot)vladimir(at)gmail(dot)com>, List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: JPA + Postgres = autocommit?
Date: 2016-07-26 17:49:26
Message-ID: CA+xsaB3tg5dvdftMg2y-kofgJhnxTVGWg444fY7xWOmaG+CVWQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(dot)Davygora(at)sulzer(dot)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(dot)vladimir(at)gmail(dot)com]
> *Gesendet:* Dienstag, 26. Juli 2016 13:22
> *An:* Davygora, Yuriy <Yuriy(dot)Davygora(at)sulzer(dot)de>
> *Cc:* List <pgsql-jdbc(at)postgresql(dot)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
>
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Lachezar Dobrev 2016-07-26 17:51:14 Re: postgresql-jdbc 9.4-1209 src tarball issue
Previous Message Lachezar Dobrev 2016-07-26 17:28:12 Re: postgresql-jdbc 9.4-1209 src tarball issue