[jboss-user] [EJB 3.0] - Entity Callback -- @PrePersist vs. @PreUpdate
john_hedden
do-not-reply at jboss.com
Tue Jun 10 21:24:09 EDT 2008
I have the following in a SFSB:
| public void saveOrder() {
|
| try {
| if (order.getId() != null) {
| entityManager.merge(order);
| FacesUtil.addInfoMessage("Order Number: " + order.getOrderNumber() +" was successfully updated.");
| } else {
| entityManager.persist(order);
| FacesUtil.addInfoMessage("Your Order Number is: " + order.getOrderNumber());
| }
| //entityManager.flush();
| //events.raiseTransactionSuccessEvent("orderCreated");
| //editOrder();
| } catch (IllegalStateException se) {
| se.fillInStackTrace();
| FacesUtil.addInfoMessage("Test ....");
| } catch (Exception e) {
| FacesUtil.addInfoMessage("Test2 ....");
| }
| }
and this listener on the order object:
public class OrderValidator {
|
| @PrePersist @PreUpdate
| public void validateSubmit(Order order) {
| if (order.getStatus() == Status.SUBMITTED) {
| if (order.getUploadFileList().size() < 1) {
| throw new IllegalStateException("Submitted orders must have at least one attachment.");
| }
| }
| }
| }
When I try and get it to fail via persist, everything works fine and I get my FacesMessage. When I try and get it to fail via merge I get:
[arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator_2] TwoPhaseCoordinator.beforeCompletion - failed for com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple at 6c43e2
| javax.persistence.PersistenceException: java.lang.IllegalStateException: Submitted orders must have at least one attachment.
| at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:527)
|
and it never reaches either catch block in my SFSB. What gives?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4157198#4157198
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4157198
More information about the jboss-user
mailing list