使用JPA CriteriaUpdate从关系中更新值

问题描述 投票:0回答:1

我在两个实体A和B之间有一个构成关系(A是所有者),我需要使用JPA CriteriaUpdate以所有者实体“ A”作为根来更新拥有实体“ B”中的字段值,我试图像这样设置整个实体B的值:

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

但是它不起作用,因为它没有遍历关系,关于我应该如何做的任何建议吗?

java hibernate jpa hibernate-criteria jpa-2.1
1个回答
0
投票

尝试一下:

// 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();

注意,标准中的批量更新不遵守同一事务中指令的执行顺序。

© www.soinside.com 2019 - 2024. All rights reserved.