This week's book giveaway is in the Java 8 forum.
We're giving away four copies of Java 8 in Action and have Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft on-line!
See this thread for details.
The moose likes Object Relational Mapping and the fly likes JPA 2.0/EclipseLink how to access Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Java 8 in Action this week in the Java 8 forum!
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "JPA 2.0/EclipseLink how to access "internal exception" type?" Watch "JPA 2.0/EclipseLink how to access "internal exception" type?" New topic
Author

JPA 2.0/EclipseLink how to access "internal exception" type?

Brendan Healey
Ranch Hand

Joined: May 12, 2009
Posts: 218

I've added a unique constraint to a table as follows:

My entity:


I then catch the exception in my EJB method create():

My EJB:


I then try to add "John Doe" twice, triggering a PersistenceException to be thrown by persist(). In my
server log I can see that there is an internal exception thrown MySQLIntegrityConstraintViolationException,
as you'd expect:



The problem is that I don't know how to access this internal level of detail about the exception, all I know
is that there is a PersistenceException, not that there's been a MySQLIntegrityConstraintViolationException.

At present my code handles an integrity constraint violation in exactly the same way as if I've forgotten
to start the database server, what I want to do is to separate out "soft" errors related to user input from
hard errors such as coding errors and major environmental problems.

If anyone knows how to achieve this I'll be eternally grateful.

Thanks,
Brendan.
Brendan Healey
Ranch Hand

Joined: May 12, 2009
Posts: 218

I can pretty much answer by own question now I think, the key point being that the exceptions are chained,
and you can navigate through the list to the root exception which is MySQLIntegrityConstraintViolationException.



And there you have it.

Regards,
Brendan.
Matthew Toso
Greenhorn

Joined: Oct 09, 2012
Posts: 1
I also had to get to the root MySQLIntegrityContraintViolationException. I like your concise for loop, however it needed a minor correction:

As you had it, the the variable t is always null when the for loop returns.
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
 
subject: JPA 2.0/EclipseLink how to access "internal exception" type?
 
Similar Threads
null value to database table from JForm
problem in creating datasource i
EJBException printing stacktrace even if handled in program
SEVERE: Exception while preparing the app : Exception [EclipseLink-28018]
How do you get underlying sql exceptions when using Java persistence