gpt4 book ai didi

java - Hibernate 单向 OneToMany 删除违反约束(父端可选=false?)

转载 作者:行者123 更新时间:2023-11-29 03:38:17 24 4
gpt4 key购买 nike

我使用 Hibernate 3.6,我有这样的东西:

@Entity 
public class Parent {
@OnyToMany( fetch = FetchType.LAZY, cascade = { ascadeType.ALL } )
@Cascade( { org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE )
@JoinColumn( name="Parent_ID" )
public List<Child> getChildren() { return children; }
public void setChildren( List<Child> children ) { this.children = children; }
private transient List<TitleMetadataCategory> children;
...
}

@Entity
public class Child {
....
}

出于多种原因,关联是单向的,我不想更改它。此外,孤儿不存在,因此存在 CHILD.PARENT_ID 不为空的 DB 约束。一切正常,除了删除 child 。当我做的时候

parent.getChildren().remove(child);
session.saveOrUpdate(parent)

它失败了。

因为我没有

@ManyToOne( optional=false )

在子端,Hibernate 尝试使用 PARENT_ID=NULL 更新子端,但由于 DB 约束而失败。

有什么办法可以解决吗?

最佳答案

你试过吗

@JoinColumn(name = "Parent_ID", nullable = false)

?

另请注意,附加的实体会自动持久化。您不需要调用 saveOrUpdate()

关于java - Hibernate 单向 OneToMany 删除违反约束(父端可选=false?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14380167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com