【问题标题】:updating a value from relation using JPA CriteriaUpdate使用 JPA CriteriaUpdate 从关系更新值
【发布时间】:2020-03-13 22:22:04
【问题描述】:

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

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

但它不起作用,因为它没有遍历关系, 请问我应该怎么做?

【问题讨论】:

    标签: java hibernate jpa criteria-api jpa-2.1


    【解决方案1】:

    试试这个:

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-20
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      相关资源
      最近更新 更多