gpt4 book ai didi

java - JPA/Hibernate/PG 的映射问题

转载 作者:搜寻专家 更新时间:2023-11-01 03:30:37 26 4
gpt4 key购买 nike

我有两个实体,实体 1 和实体 2,一对多关系。在 Entity1 上,我有一个包含条目的 map 。

我用来在 map 上保留一个新的 Entity1 和一些 Entity2 的代码是这样的:

   Entity1 e1 = new Entity1();  
Entity2 e2 = null;
e1.setE2s(new HashMap<String, Entity2>());
for (String key : someKeySet()){
e2 = new Entity2();
e2.setCode(key);
e2.setSwhon(true);
e2.setE1(e1);
e1.getE2s(key, e2);
em.persist(e1.getE2s().get(key));

}
em.persist(e1);
em.flush();

这是实体的摘录:

@Entity
@Table(name = "wm_Entities1")
public class Entity1 implements Serializable {
private static final long serialVersionUID = 6592708276573465599L;
private Map<String, Entity2> e2s;
private Long id;
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public void setE2s(Map<String, Entity2> e2s){
this.e2s = e2s;
}
@OneToMany(mappedBy = "e1", fetch = FetchType.EAGER)
public Map<String, Entity2> getE2s() {
return e2s;
}
}

@Entity
@Table(name = "wm_Entities2")
public class Entity2 implements Serializable {
private static final long serialVersionUID = -6131765066573346790L;
private long id;
private Entity1 e1;
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}
@ManyToOne()
@JoinColumn(name="e1_id")
public Entity1 getE1() {
return this.e1;
}
public void setE1(Entity1 e1) {
this.e1 = e1;
}
}

这似乎工作正常,因为它在 pg 数据库中插入了两个实体,但要注意的是它没有在数据库中创建保存 e2 的 MapKey(理论上 JPA​​ 生成这个 key ),所以当我得到e1 返回,我尝试从中获取 e2s map ,我有一个:

javax.ejb.EJBException: org.hibernate.HibernateException: null index column for collection:

如何保存这个 MapKey??

注意:我将 JavaEE 与 JPA/Hibernate 结合使用,在 JBoss 4.2 上运行,并带有 PGSQL DB。

最佳答案

您的代码中有一些奇怪的地方……但您似乎应该在 Entity1 中添加一个 @MapKey 注释:

(snippet)
@OneToMany(mappedBy = "e1", fetch = FetchType.EAGER)
@MapKey(name="iCantFigureTheRightPropertyName")
public Map<String, Entity2> getE2s() {
return e2s;
}

关于java - JPA/Hibernate/PG 的映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/458048/

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