[jboss-user] [Persistence] - Simple JPA question

muzero do-not-reply at jboss.com
Mon Sep 14 06:34:40 EDT 2009


I'm trying to create a simple INSERT and DELETE test  of an entity using JPA:


  | 
  | User user = new User();
  | 
  | userEao = (GenericEAO<User, Long>) cxt.lookup("UserEAO/remote");
  | 
  | User user2 = userEao.persist(user);
  | 
  | userEao.flush();
  | 
  | 

The question is: when user is created should be in TRANSISTENT state, and when i persist it with 

 User user2 = userEao.persist(user); 

i suppose that the user2 is a reference of a user in a MANAGED state.

Actually if i try to delete user with  
 userEao.delete(user); 

jboss tell to me:


  | [DefaultDeleteEventListener] handling transient entity in delete processing
  | 

and it's correct, but if i try to delete the user2 jboss tell to me
 

  | javax.ejb.EJBException: java.lang.IllegalArgumentException: Removing a detached instance
  | 

and i dont' understand why the entity user2 is detached! 
so i have BEFORE to merge it ( DETACHED -> MANAGED ) , and than to DELETE, and it works.


  | @Override
  | 	@TransactionAttribute(TransactionAttributeType.REQUIRED)
  | 	public User persist(User entity) {
  | 		getEntityManager().persist(entity);
  | 		return entity;
  | 	}
  | 

is it the problem? when the persist finish, it close the transaction and entity became detached?

i dont want to merge it, cause it causes another select that i want to avoid. 
Or i should i cache the entity instead?

probably i didn't understand the JPA transactions, what you suggest me to read?

Thanks, Muzero



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

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



More information about the jboss-user mailing list