【发布时间】:2012-09-10 15:36:10
【问题描述】:
考虑以下 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 ]
我正在尝试做的是在 one 声明 all 中切断 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。但也许这里有人知道解决方法?
【问题讨论】: