Java 如何在hibernate注释中使用级联类型save、delete、update
有人能给我解释一下hibernate注释如何使用不同类型的级联,比如delete、upadte、save-update吗 我如何确保当车主被删除时,其汽车也被删除(但不是相反)Java 如何在hibernate注释中使用级联类型save、delete、update,java,hibernate,Java,Hibernate,有人能给我解释一下hibernate注释如何使用不同类型的级联,比如delete、upadte、save-update吗 我如何确保当车主被删除时,其汽车也被删除(但不是相反) 这里的陷阱是有两个级联类型枚举。一个是javax.persistence,另一个是hibernate。一般来说,我更喜欢使用持久性 对于级联更新,请记住“更新”是一个hibernate术语,jpa不知道这一点。Jpa不需要它,因为在Jpa中,更新的字段将自动刷新到数据库中。如果你在关系上做了任何改变,这些也会随之改变。因
这里的陷阱是有两个级联类型枚举。一个是javax.persistence,另一个是hibernate。一般来说,我更喜欢使用持久性 对于级联更新,请记住“更新”是一个hibernate术语,jpa不知道这一点。Jpa不需要它,因为在Jpa中,更新的字段将自动刷新到数据库中。如果你在关系上做了任何改变,这些也会随之改变。因此,您不需要在更新时进行级联 对于保存更新,这是一个hibernate快捷方式,可以根据对象的状态使用持久化或更新。由于您已经介绍了persist和update(见上文),因此不需要对其进行级联 要级联删除,您可能需要使用
@orphanRemoving
。这将确保如果关系的父级被删除,子级也会消失(但不是相反)
也许知道为什么你们对我的问题投了反对票?我在谷歌上搜索了很多来找到答案,但我不知道如何使用我读到的一个,所有的都在xml映射中,而不是在注释中,如果你给我发送链接那就太好了。这一个很好:“不理解”是一个太广泛的问题。为了得到一个好的答案,这个问题必须有重点。如果您发现了一个您不理解的特定部分,请询问该部分,最好使用代码示例。如果您还没有理解本教程的原则,StackOverflow将不会有多大帮助-您将不得不返回一步,重复介绍性材料。我从您的链接中了解到一点,我怀疑如果我删除车主,我也想删除车,但如果删除车,我不想删除车主u来执行此操作。mappedBy=“owner”,你能解释一下吗?@user3214269这是你自己的代码。。。看见
@Entity
public class Owner
{
@OneToOne(cascade=CascadeType.ALL)
private DrivingLicense license;
@OneToMany(mappedBy="owner", cascade={CascadeType.PERSIST, CascadeType.MERGE})
private Collection cars;
...
}
@Entity
public class DrivingLicense
{
private String serialNumber;
...
}
@Entity
public class Car
{
private String registrationNumber;
@ManyToOne(cascade={CascadeType.PERSIST, CascadeType.MERGE})
private Owner owner;
...
}
@OneToMany(mappedBy="owner", cascade={CascadeType.PERSIST, CascadeType.MERGE})
@OrphanRemoval
private Collection cars;