Hi,

I am trying to use a OneToMany relationship between my MemberDetail Class and 
its addresses. Here is the code:

MemberDetail.java:

  | public class MemberDetail implements java.io.Serializable {
  | .
  | .
  | .
  | private Collection<Address> addresses = new ArrayList<Address>();
  | .
  | .
  | .
  |     @OneToMany(cascade={CascadeType.ALL})   @JoinColumn(name="LINKER_ID")
  |     public Collection<Address> getAddresses() {
  |             return addresses;
  |     }
  |             public void setAddresses(Collection<Address> addresses) {
  |             this.addresses = addresses;
  |     }
  | .
  | .
  | .
  | 

Address.java:

  | public class Address implements java.io.Serializable {
  | .
  | .
  | .
  | private int id;
  | .
  | .
  | .
  | @Id 
  | @Column(name = "ID", unique = true, nullable = false, insertable = true, 
updatable = true)
  |     public int getId() {
  |             return this.id;
  |     }
  |     public void setId(int id) {
  |             this.id = id;
  |     }
  | .
  | .
  | .
  | 

The Address class does not have any reference to MemberDetail class.

Creating the Member Detail:

  |     memberDetail.setProfileId(profile.getProfileId());
  |     memberDetail.setStatus('R');
  |     memberDetail.setModificationNum(1);
  |                             
  |     officeAddress.setActive('R');
  |     officeAddress.setModificationNum(1);
  |     personalAddress.setActive('R');
  |     personalAddress.setModificationNum(1);                          
  |     memberDetail.getAddresses().add(officeAddress);
  |     memberDetail.getAddresses().add(personalAddress);
  |     try {
  |     manager.persist(memberDetail);
  |     return true;
  |     }catch(Exception exc){
  |                     exc.printStackTrace();
  |                     return false;
  |             }    
  | 

I get the following error upon persisting:
anonymous wrote : 
  | 19:37:16,671 ERROR [STDERR] javax.persistence.PersistenceException: 
org.hibernate.NonUniqueObjectException: a different object with the same 
identifier value was already associated with the session: 
[com.justbooks.common.entities.Address#0]
  | 19:37:16,687 ERROR [STDERR] at 
org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:629)
  | 19:37:16,687 ERROR [STDERR] at 
org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:218)
  | 19:37:16,687 ERROR [STDERR] at 
org.jboss.ejb3.entity.TransactionScopedEntityManager.persist(TransactionScopedEntityManager.java:182)
  | 19:37:16,687 ERROR [STDERR] at 
com.justbooks.security.activities.ManageProfileBean.createProfile(ManageProfileBean.java:95)
 
  | 

I am using EJB 3.0 persistence with J2EE 1.4/J2SE 5. I assume that Address IDs 
should be autogenerated. I am using MySQL DB and I have marked the field for 
autogenerate.

I am sure I am doing something wrong, but not able to pinpoint the problem.

Thanks in advance. Any clues are welcome.

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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4135556
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to