I think I answered my own question - I was hung up on the seam-gen'ed code; I 
implemented my own entities which seem to work fine.

I removed the mappedBy attribute on the @OneToMany annotation and added a 
@JoinColumn annotation - that seemed to fix things.

package com.mydomain.example;
  | 
  | import java.util.HashSet;
  | import java.util.Set;
  | 
  | import javax.persistence.CascadeType;
  | import javax.persistence.Column;
  | import javax.persistence.Entity;
  | import javax.persistence.FetchType;
  | import javax.persistence.GeneratedValue;
  | import javax.persistence.Id;
  | import javax.persistence.JoinColumn;
  | import javax.persistence.OneToMany;
  | import javax.persistence.Table;
  | 
  | import org.hibernate.validator.NotNull;
  | 
  | /**
  |  * Department generated by hbm2java
  |  */
  | @Entity
  | @Table(name = "DEPARTMENT")
  | public class Department implements java.io.Serializable {
  | 
  |     private long departmentId;
  | 
  |     private Set<DepartmentStrings> strings = new 
HashSet<DepartmentStrings>(0);
  | 
  |     public Department() {
  |     }
  | 
  |     public Department(long departmentId) {
  |             this.departmentId = departmentId;
  |     }
  | 
  |     public Department(long departmentId,
  |                     Set<DepartmentStrings> departmentStringses) {
  |             this.departmentId = departmentId;
  | 
  |             this.strings = departmentStringses;
  |     }
  | 
  |     @Id
  |     @Column(name = "DEPARTMENT_ID", unique = true, nullable = false, 
precision = 16, scale = 0)
  |     @NotNull
  |     @GeneratedValue
  |     public long getDepartmentId() {
  |             return this.departmentId;
  |     }
  | 
  |     public void setDepartmentId(long departmentId) {
  |             this.departmentId = departmentId;
  |     }
  | 
  |     @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
  |     @JoinColumn(name = "DEPARTMENT_ID")
  |     public Set<DepartmentStrings> getStrings() {
  |             return this.strings;
  |     }
  | 
  |     public void setStrings(Set<DepartmentStrings> strings) {
  |             this.strings = strings;
  |     }
  | 
  | }
  | 


package com.mydomain.example;
  | 
  | import javax.persistence.AttributeOverride;
  | import javax.persistence.AttributeOverrides;
  | import javax.persistence.Column;
  | import javax.persistence.EmbeddedId;
  | import javax.persistence.Entity;
  | import javax.persistence.Table;
  | 
  | import org.hibernate.validator.NotNull;
  | 
  | /**
  |  * DepartmentStrings generated by hbm2java
  |  */
  | @Entity
  | @Table(name = "DEPARTMENT_STRINGS")
  | public class DepartmentStrings implements java.io.Serializable {
  | 
  |     private DepartmentStringsId id;
  | 
  |     private String name;
  | 
  |     public DepartmentStrings() {
  |     }
  | 
  |     public DepartmentStrings(DepartmentStringsId id) {
  |             this.id = id;
  |     }
  | 
  |     @Column(name = "NAME")
  |     public String getName() {
  |             return name;
  |     }
  | 
  |     public void setName(String name) {
  |             this.name = name;
  |     }
  | 
  |     @EmbeddedId
  |     @AttributeOverrides( {
  |                     @AttributeOverride(name = "department", column = 
@Column(name = "DEPARTMENT_ID", precision = 16, scale = 0)),
  |                     @AttributeOverride(name = "langCode", column = 
@Column(name = "LANG_CODE", nullable = false, length = 5)) })
  |     @NotNull
  |     public DepartmentStringsId getId() {
  |             return this.id;
  |     }
  | 
  |     public void setId(DepartmentStringsId id) {
  |             this.id = id;
  |     }
  | }
  | 


package com.mydomain.example;
  | 
  | import java.io.Serializable;
  | 
  | import javax.persistence.Column;
  | import javax.persistence.JoinColumn;
  | import javax.persistence.ManyToOne;
  | 
  | public class DepartmentStringsId implements Serializable {
  | 
  |     private Department department;
  | 
  |     private String langCode;
  | 
  |     public DepartmentStringsId() {
  |     }
  | 
  |     public DepartmentStringsId(Department department, String langCode) {
  |             super();
  |             this.department = department;
  |             this.langCode = langCode;
  |     }
  | 
  |     @ManyToOne
  |     @JoinColumn(name = "DEPARTMENT_ID")
  |     public Department getDepartment() {
  |             return department;
  |     }
  | 
  |     public void setDepartment(Department department) {
  |             this.department = department;
  |     }
  | 
  |     @Column(name = "LANG_CODE")
  |     public String getLangCode() {
  |             return langCode;
  |     }
  | 
  |     public void setLangCode(String langCode) {
  |             this.langCode = langCode;
  |     }
  | }
  | 

...and some quick TestNG methods:


  |     @Test(enabled = true)
  |     public void testCreateWithString() throws Exception {
  |             EntityManagerFactory emf = Persistence
  |                             .createEntityManagerFactory("ejbexample");
  |             EntityManager em = emf.createEntityManager();
  |             em.getTransaction().begin();
  | 
  |             Department d = new Department();
  | 
  |             DepartmentStrings ds1 = new DepartmentStrings(new 
DepartmentStringsId(
  |                             d, "en-us"));
  |             ds1.setName("Test name");
  | 
  |             DepartmentStrings ds2 = new DepartmentStrings(new 
DepartmentStringsId(
  |                             d, "es-mx"));
  |             ds2.setName("Pruebe el nombre");
  | 
  |             d.getStrings().add(ds1);
  |             d.getStrings().add(ds2);
  | 
  |             em.persist(d);
  |             em.getTransaction().commit();
  | 
  |             this.departmentId = d.getDepartmentId();
  |     }
  | 
  |     @Test(enabled = true, dependsOnMethods = "testCreateWithString")
  |     public void testLookup() throws Exception {
  |             EntityManagerFactory emf = Persistence
  |                             .createEntityManagerFactory("ejbexample");
  |             EntityManager em = emf.createEntityManager();
  |             Department d = em.find(Department.class, this.departmentId);
  | 
  |             assert d.getStrings().size() == 2;
  | 
  |             for (DepartmentStrings ds : d.getStrings()) {
  |                     assert ds.getName().equals("Test name")
  |                                     || ds.getName().equals("Pruebe el 
nombre");
  |             }
  |     }
  | 

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

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

Reply via email to