gpt4 book ai didi

java - 分离的实体传递到持久化 : model. 公司

转载 作者:行者123 更新时间:2023-11-30 02:11:58 28 4
gpt4 key购买 nike

我正在将分离的实体传递给 persist: model。公司当我使用@OneToMany映射时。我尝试了不同的方法但结果相同。我添加了 @OneToMany 和 CascadeTypes Persist 等。删除那些。设置经理并试图坚持,评论设置经理并试图坚持。他们都没有工作。

公司:

@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;
}

}

经理

@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;
}
}

测试

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");
}
}

最佳答案

您正在使用 company.setId(1); 手动设置公司 ID。

@GenerateValue 最好不要管。

持久性上下文将假定记录已存在,但已分离,因为设置了 id 但实体不在当前持久性上下文(由当前 EntityManager 表示)中。

关于java - 分离的实体传递到持久化 : model. 公司,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49789712/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com