Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
JPA不会将外键设置为单向@OneToMany关系_Jpa_Eclipselink_One To Many - Fatal编程技术网

JPA不会将外键设置为单向@OneToMany关系

JPA不会将外键设置为单向@OneToMany关系,jpa,eclipselink,one-to-many,Jpa,Eclipselink,One To Many,我有两个单向关系的类: @Entity public class A { @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name="fk_column") private List<B> bList; ... } @Entity public class B { ... } 然后a和b在数据库中进行初始持久化,b获得了a的正确外键 但当我在另一笔交易中这样做时: A a = loadFromD

我有两个单向关系的类:

@Entity
public class A {

   @OneToMany(cascade = CascadeType.ALL)
   @JoinColumn(name="fk_column")
   private List<B> bList;

   ...
}

@Entity
public class B {
   ...
}
然后a和b在数据库中进行初始持久化,b获得了a的正确外键

但当我在另一笔交易中这样做时:

A a = loadFromDatabaseByJPQLQuery(); 
B anotherB = new B();
a.getBList().add(anotherB);
em.merge(a);
然后另一个B确实是persist,但它在fk_列中的外键为null


如何确保密钥正确存储?

我无法从您的示例中找出它,因此我将询问,实体B定义了
@ManyToOne
列?另外,在
@OneToMany
上,您可以使用批注的属性
mappedBy
来定义谁持有该关系,而不是
@JoinColumn
。不,它是单向关系。B中没有@manyTone。请尝试添加
@JoinColumn
属性
referencedColumnName
,并查看有关该属性的更多信息。没有。同样,对于
referencedColumnName
属性,它不起作用。不起作用的示例似乎与工作示例完全相同,JPA也应如此对待。尝试打开日志记录,看看是否显示了什么;EclipseLink应插入带有null的B,然后在处理对“a”关系的更改时更新该行。
A a = loadFromDatabaseByJPQLQuery(); 
B anotherB = new B();
a.getBList().add(anotherB);
em.merge(a);