aspose file tools*
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 Spring in Action this week in the Spring 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.
 
 
subject: JPA 2.0/EclipseLink how to access "internal exception" type?