Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA2.0和EJB3.1-更新试图插入记录的所有者方关系?_Java_Jpa 2.0_Glassfish 3_Ejb 3.1 - Fatal编程技术网

Java JPA2.0和EJB3.1-更新试图插入记录的所有者方关系?

Java JPA2.0和EJB3.1-更新试图插入记录的所有者方关系?,java,jpa-2.0,glassfish-3,ejb-3.1,Java,Jpa 2.0,Glassfish 3,Ejb 3.1,我有一个模型: @Entity class A { @ManyToOne B b; int i; } @Entity class B { @OneToMany(mappedBy="b") List< A > list = new ArrayList< A >(); } 此抛出db约束异常插入到B值中。。。与当前B中已存在的值相同 为什么在B表中已经存在一条新记录且关系不持久的情况下,尝试向B插入一条新记录? 注: 1当我在最后一行之后执行

我有一个模型:

@Entity
class A {
   @ManyToOne
   B b;
   int i;
}

@Entity
class B {
   @OneToMany(mappedBy="b")
   List< A > list = new ArrayList< A >();
}
此抛出db约束异常插入到B值中。。。与当前B中已存在的值相同

为什么在B表中已经存在一条新记录且关系不持久的情况下,尝试向B插入一条新记录? 注:

1当我在最后一行之后执行以下操作时:

em.merge(a);
这也是工作

2当我做a.setI1时;没有合并-它在DB中更改,就像我想的那样


谢谢

这是一种双向关系。你应该随时更新双方的关系。否则,如果在持久化过程中没有直接出现问题,则很容易损坏缓存并在应用程序中遇到一些错误

所以,如果你有这个:

A a = em.find(A.class, Aid);
B b = em.find(B.class, Bid);
a.setB(b);
您应该在以下内容之后添加此内容:

List<A> aList = b.getList();
if (!aList.contains(b)) {
    aList.add(b);
}
2当我做a.setI1时;不合并- 它在DB中改变了,就像我想的那样 意志

如果您在ejb中使用entityManager,我认为您在标记方面是这样做的,那么对托管实体的更改被持久化是正常的。这是个问题吗


另外,您应该确保实体标识、相等和hashcode的定义是正确的,可能是,但您没有提到。

这是一种双向关系。你应该随时更新双方的关系。否则,如果在持久化过程中没有直接出现问题,则很容易损坏缓存并在应用程序中遇到一些错误

所以,如果你有这个:

A a = em.find(A.class, Aid);
B b = em.find(B.class, Bid);
a.setB(b);
您应该在以下内容之后添加此内容:

List<A> aList = b.getList();
if (!aList.contains(b)) {
    aList.add(b);
}
2当我做a.setI1时;不合并- 它在DB中改变了,就像我想的那样 意志

如果您在ejb中使用entityManager,我认为您在标记方面是这样做的,那么对托管实体的更改被持久化是正常的。这是个问题吗


此外,您应该确保实体标识、相等和哈希代码的定义正确,可能是这样,但您没有提到。

您的问题确实令人困惑。你在问什么?你能提供更多关于你的模型的信息吗,比如id属性等等?你的问题真的很让人困惑。你在问什么?你能提供更多关于你的模型的信息,比如id属性等吗?