JPA Foreign -Key始终为null

时间:2014-06-16 17:35:47

标签: hibernate jpa identity

我在网上搜索过,但我没有找到任何关于我的问题的提示。假设我们有两个类

@Entity
@Table(name="childTable"
public class Child{
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @Column(name="child_id", unique=true, nullable=false)
 public String id;


 @ManyToOne(fetch = FetchType.LAZY, optional=false)
 @JoinColumn(name="child2parent", insertable=false, updatable=false)
 public Parent parent;

 // some other data
 // getter and setter
}

@Entity
@Table(name="parentTable"
public class Parent{
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @Column(name="parent_id", unique=true, nullable=false)
 public String id;

 @OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL, mappedBy="parent")
 private Set<Child> children;

 // some other data
 // getter and setter
}

我试图将Child插入本地h2存储库但是当我尝试保存它时,会抛出一个禁止违规异常:&#34; NULL不允许列#34; PARENT_ID&#34; ;

父级是通过setter设置的,并且有一个id。我还尝试将子项添加到子集中并将其保存到存储库中。但是保存孩子会引发同样的错误。

任何人都可以帮助我吗?我希望有足够的代码来理解我的问题。

[Q&安培; A]

我试图在孩子面前坚持父母。此外,父项已存储且模型类不为空。

我已尝试删除可插入/可更新,但没有效果

以下是代码:

// parent already present in DB
Child child = new Child();
child.setParent(parent);
childRepository.save(child);

我尝试使用级联来保存父级以保存子级,但系统仍然告诉我父级的id为null。我还尝试根据How do I use annotations to define different types of relationships in Hibernate 4 and Spring?更改代码,但没有效果。

[编辑] 我删除了Fetchtype和可选标志。但现在系统会记录违反参照完整性的内容。

[解决] 这是一个未删除的专栏。该线程可以删除。

0 个答案:

没有答案