aspose file tools*
The moose likes Object Relational Mapping and the fly likes EJB & JPA Unexpected Results Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "EJB & JPA Unexpected Results" Watch "EJB & JPA Unexpected Results" New topic
Author

EJB & JPA Unexpected Results

Glen Divers
Ranch Hand

Joined: Jan 21, 2010
Posts: 61
Hi

I have two entities, Client and Telephone





and I'm using the Netbeans generated AbstractFacade handle the persistence. My persistence code is;



If I create a new client with a unique telephone number everything works. However, if I create a new client and reuse an existing persisted
telephone number, I get an exception because the phone number already exists in the database as expected, but the new client is still created in the database. I was expecting a rollback and neither client nor telephone to be persisted.

What am I missing/have I done wrong?

Regards
James Sutherland
Ranch Hand

Joined: Oct 01, 2007
Posts: 553
Check your transaction options. It seems you are using a SessionBean, so need to being using a JTA DataSource, but probably are not.

Include your persistence.xml.


TopLink : EclipseLink : Book:Java Persistence : Blog:Java Persistence Performance
Glen Divers
Ranch Hand

Joined: Jan 21, 2010
Posts: 61
Thanks for your response, persistance.xml is specifying JTA
James Sutherland
Ranch Hand

Joined: Oct 01, 2007
Posts: 553
Ensure that you have defined "jdbc/pembridge" as a JTA enabled DataSource in Glassfish.
Glen Divers
Ranch Hand

Joined: Jan 21, 2010
Posts: 61
James Sutherland wrote:Ensure that you have defined "jdbc/pembridge" as a JTA enabled DataSource in Glassfish.


jdbc/pembridge is defined in terms of a connection pool. There doesn't appear to be any other options. The connection pool is defined as a resource type javax.sql.ConnectionPoolDataSource with a datasource classname of com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource.

Glassfish offers alternative resource types of javax.sql.Driver, javax.sql.DataSource and javax.sql.XADataSource. I can't find anything that indicates/mentions JTA.

One odd thing however, Glassfish seems to be creating it's own connection & pool definition. It's created its own connection "pembridge" connnected to pool "mysql_Pembridge_RootPool" which is defined with a resource type of javax.sql.DataSource with a datasource class name of com.mysql.jdbc.jdbc2.optional.MysqlDataSource. If I delete these, they appear to be re-created when I deploy my application, although it never uses this (there's no database userid or password defined for it)

Regards
James Sutherland
Ranch Hand

Joined: Oct 01, 2007
Posts: 553
I believe the JTA DataSource is the javax.sql.XADataSource one.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: EJB & JPA Unexpected Results