[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - How to catch Entity Manager exceptions ?

slugounet do-not-reply at jboss.com
Sun Jun 24 14:12:09 EDT 2007


Hi !

I have a few entity beans with validation annotations, and I'd like to be able to catch the exceptions thrown by the hibernate validator when something goes wrong.


  | @Entity
  | public class Country {
  | 
  | 	@Id
  | 	@GeneratedValue( strategy=GenerationType.AUTO )
  | 	private Integer id;
  | 	
  | 	@NotNull
  | 	@Length(min = 1, max = 255)
  | 	private String name;
  | }
  | 


  | @Stateless 
  | @Remote(Update.class)
  | public class UpdateSessionBean implements Serializable, Update {
  | 	public CountryDataBean updateCountry( CountryDataBean bean )
  | 			throws UpdateException {
  | 		Country entity = this.entityManager.find( Country.class, bean.getId() );
  | 		if ( entity == null ) {
  | 			throw new UpdateException( "Country not found" );
  | 		}
  | 		
  | 		CountryMapper mapper = new CountryMapper();
  | 		mapper.toEntity( bean, entity );
  | 		
  | 		try {
  | 			entity = this.entityManager.merge( entity );
  | 		}
  | 		catch( InvalidStateException e ) {
  | 			... do some stuff
  | 		}
  | 
  | 		mapper.toDataBean( entity, bean );
  | 		return bean;
  | 	}
  | }
  | 

When I force an error, I get that kind of error message :


  | 19:49:43,158 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator_2] TwoPhaseCoordinator.beforeCompletion - failed for com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple at 7cd469
  | javax.persistence.PersistenceException: org.hibernate.validator.InvalidStateException: validation failed for: prixmac.indexation.database.Country
  | 	at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:527)
  | 	at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)
  | 	at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:249)
  | 	at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:88)
  | 	at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
  | 	at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1256)
  | 	at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
  | 	at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
  | 	at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)
  | 	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
  | ...
  | 

Does anyone have an idea of how I could catch those damned exceptions in my session bean ? Cause it's pretty pointless for me to validate the data if I can't find a way to know that something went wrong :(

I'm using JBoss 4.2.0 !

Best regards,

Guillaume

 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4057196#4057196

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4057196



More information about the jboss-user mailing list