使用JPA CriteriaUpdate更新关系中的值



我在两个实体a&B(A是所有者(,我需要使用JPA标准更新所有者实体"A"作为根的所有者实体"B"中的字段值,我试图将整个实体B的值设置为这样:

criteriaUpdate.from(A.class).set("B",valueOfB);

但它不起作用,因为它没有遍历关系,有什么建议我该怎么做吗?

试试这个:

// Create criteria builder
CriteriaBuilder cb = this.em.getCriteriaBuilder();
//In Criteria Update cant define Joins, use B as Root entity
CriteriaUpdate<B> cq = cb.createCriteriaUpdate(B.class);
Root rootB = cq.from(B.class);
//Set te value in entity B (access property by Metamodel)
cq.set(rootB.get(B_.propertie), **newValue**);
//Set te condition over Root.Join.property (access propery by Metamodel)
cq.where(cb.equals(rootB.get(B_.a).get(A_.property),**valueEqualsPropertyB**));
em.createQuery(cq).executeUpdate();

请注意,条件中的批量更新不尊重在同一事务中执行的指令序列。

最新更新