Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Java Hibernate delete刚刚赢得';t火_Java_Hibernate_Repository_Jpa 2.0 - Fatal编程技术网

Java Hibernate delete刚刚赢得';t火

Java Hibernate delete刚刚赢得';t火,java,hibernate,repository,jpa-2.0,Java,Hibernate,Repository,Jpa 2.0,我以前问过这个问题,但仍然不知道发生了什么 我读过关于实体在删除之前需要清除关系的内容,以及关于cascade.all在父实体中的内容,但是我仍然不明白hibernate是如何不做任何事情的 @Transactional public void deleteAllinRange(LocalDate a, LocalDate b) { List<Invoice> z = invoiceRepo.selector(a,b); for(Invoice x : z){

我以前问过这个问题,但仍然不知道发生了什么

我读过关于实体在删除之前需要清除关系的内容,以及关于cascade.all在父实体中的内容,但是我仍然不明白hibernate是如何不做任何事情的

@Transactional
public void deleteAllinRange(LocalDate a, LocalDate b) {
List<Invoice> z = invoiceRepo.selector(a,b);
    for(Invoice x : z){
        x.setOwner(null);
        invoiceRepo.delete(x);
    }
@Transactional
public void deleteAllinRange(LocalDate a、LocalDate b){
列表z=invoiceRepo.选择器(a,b);
发票(x:z){
x、 setOwner(null);
发票回购。删除(x);
}
进入for循环z的列表大小是314,并且有我期望的所有实体。 然后我尝试将owner设置为null,因为这是与父元素的唯一关系

在为owner设置为null后,x entity中的所有属性都是long、string或localDate类型,因此肯定不会与父元素有任何关系吗

父元素是具有发票元素列表的发票集

@OneToMany(cascade=CascadeType.ALL, mappedBy = "owner", orphanRemoval = true)
@JsonManagedReference
private List<Invoice> invoices = new ArrayList<>();
@OneToMany(cascade=CascadeType.ALL,mappedBy=“owner”,orphan=true)
@JsonManagedReference
私有列表发票=新的ArrayList();
java fill只需运行
invoiceRepo.delete(x);
X314,但实际上什么都不做,SQL调试显示甚至没有尝试删除任何内容,注意这里查询的是


为什么会发生这种情况?为什么没有任何查询,没有错误,什么都没有。

当您
setOwner
并且不保存x时,它就没有效果。另外,如果您有一个约束
nullable=false
,则不能将其设置为null

您想做什么?您想删除发票并保留其所有者吗?然后您应该删除
orphanRemoving=true

或者,如果要删除孤立的所有者,请保持原样,只删除发票而不将所有者设置为空。它将自动删除孤立的所有者

如果要手动管理它们,不要设置外键并破坏它们之间的关系,只要在需要时删除任何记录,并将字段设置为null或value

此外,还可以使用存储库的方法
delete(Iterable Iterable)
一次删除多个