I'm getting the detached entity passed to persist: model. Company when I use @OneToMany mapping. I tried different method but the same result. I added @OneToMany with CascadeTypes Persist and all. Remove those. Set the manager and tried to persist, commented the set of manager and tried to persist. None of them worked.
Company:
@Entity
public class Company {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int id;
private int age;
@ElementCollection
private Set<Manager> managers;
private String name;
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public void setManagers(Set<Manager> managers) {
this.managers = managers;
}
public Set<Manager> getManager() {
return managers;
}
}
Manager
@Entity
public class Manager {
@Id
@GeneratedValue
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Test
public class Test {
public static void main(String args[]) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpatestproject");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
// Manager m1 = new Manager();
// m1.setName("abc");
// Manager m2 = new Manager();
// m2.setName("def");
// Set<Manager> managers = new HashSet();
// managers.add(m1);
// managers.add(m2);
//
Company company = new Company();
company.setId(1);
company.setName("LTE");
// company.setManagers(managers);
tx.begin();
em.persist(company);
tx.commit();
System.out.println("Done");
}
}