【发布时间】:2011-06-09 16:51:29
【问题描述】:
我有一个模型:
@Entity
class A {
@ManyToOne
B b;
int i;
}
@Entity
class B {
@OneToMany(mappedBy="b")
List< A > list = new ArrayList< A >();
}
现在我在我的 EJB 服务中:
void f(Aid,Bid){
A a = em.find(A.class, Aid);
B b = em.find(B.class, Bid);
a.setB(b);
}
这抛出 db 约束异常(INSERT INTO B VALUES... WITH SAME VALUES THAT ALREADY EXIST IN CURRENT B)。
- 为什么在 B 表中已经存在且关系不是 PERSIST 的情况下尝试向 B 插入新记录?
注意事项:
1 当我在最后一行之后做:
em.merge(a);
它的工作以及...???
2 当我做a.setI(1);没有合并 - 它在 DB 中发生了变化(就像我想的那样)
谢谢!!!
【问题讨论】:
-
您的问题确实令人困惑。你在问什么?
-
您能否提供有关您的模型的更多信息,例如 id 属性等?
标签: java jpa-2.0 glassfish-3 ejb-3.1