I can't seem to get the original exception.
In my Object:
public void checkBeforeDelete() {
if(getInvoiced() != null && getInvoiced())
throw new RuntimeException("*** Invoice created " +
getFormattedCreationDate() + " is invoiced, can't delete");
}
Then I catch the error the following way:
try {
_session.getDataContext().deleteObject(invoice);
_session.getDataContext().commitChanges();
} catch(Exception e) {
System.out.println("***** CAN'T DELETE INVOICE: " +
e.getMessage());
_session.getDataContext().rollbackChanges();
}
e.getCause() will give me an InvocationTargetException.
Alex
Le 26 févr. 08 à 10:56, Andrus Adamchik a écrit :
On Feb 26, 2008, at 11:45 AM, Alexander Lamb (dev) wrote:
Hello List,
I want to prevent a delete of an object if certain attributes have
certain values (e.g. do not delete an invoice which has already
been sent).
I registered the callback in the Modeler. Works fine.
I do my test in the callback function I defined, it works fine.
Except that to "stop" the delete, I raise a RuntimeException (I
don't see any other way). It works and is catched by the delete.
However I do not get my exception, but an exception Cayenne has
generated.
What is the correct way to raise an exception and transfer up the
correct error message?
Thanks,
Alex
Without looking at the code, IIRC CayenneRuntimeException.getCause()
should store your exception.
Andrus