我在网上搜索过,但我没有找到任何关于我的问题的提示。假设我们有两个类
@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和可选标志。但现在系统会记录违反参照完整性的内容。
[解决] 这是一个未删除的专栏。该线程可以删除。