考虑以下 JPQL 查询:
UPATE FOO f SET f.bars = NULL
运行此语句将产生异常:
java.lang.IllegalArgumentException: org.hibernate.QueryException: collections not assignable in update statements [UPATE FOO f SET f.bars = NULL ]
我想要做的是在一个声明中切断FOO 和 BAR 之间的所有关联。而不是遍历每个 FOO 以将条集合设置为空。那要快得多。
不幸的是,该关联是单向的——因此 Bar 实体中没有foo属性。因此 JPQL 可以清除关联的另一端。
调用 NEW 也不起作用:
UPATE FOO f SET f.bars = NEW java.util.ArrayList()
这会导致不同的异常:
java.lang.IllegalArgumentException: node to traverse cannot be null!
很明显,JPA/Hibernate 不允许将集合关联设置为 null。但也许这里有人知道解决方法?