Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 如何使用CriteriaUpdate设置true?_Jpa_Criteria Api - Fatal编程技术网

Jpa 如何使用CriteriaUpdate设置true?

Jpa 如何使用CriteriaUpdate设置true?,jpa,criteria-api,Jpa,Criteria Api,我有一个具有布尔属性的实体 class MyEntity { @Basic(optional = false) @Column(name = "FLAG") private boolean flag; } 如何使用true对标志字段执行批量更新设置 // UPDATE MyEntity AS e SET e.flag = TRUE final CriteriaBuilder builder = entityManager.getCriteriaBuilder(); fi

我有一个具有
布尔属性的实体

class MyEntity {
    @Basic(optional = false)
    @Column(name = "FLAG")
    private boolean flag;
}
如何使用
true
标志
字段执行批量更新设置

// UPDATE MyEntity AS e SET e.flag = TRUE
final CriteriaBuilder builder = entityManager.getCriteriaBuilder();
final CriteriaUpdate<MyEntity> update
    = builder.createCriteriaUpdate(MyEntity.class);
final Root<MyEntity> root = criteriaUpdate.from(MyEntity.class);
update.set(root.get(ProfileClue_.flag), ???);
//将MyEntity更新为e SET e.flag=TRUE
最终CriteriaBuilder=entityManager.getCriteriaBuilder();
最终标准更新
=builder.createCriteriaUpdate(MyEntity.class);
最终根=criteriaUpdate.from(MyEntity.class);
update.set(root.get(ProfileClue.flag),??);

使用纯JPA,我会做如下事情

final CriteriaBuilder builder = entityManager.getCriteriaBuilder();
final CriteriaUpdate<MyEntity> update = builder.createCriteriaUpdate(MyEntity.class);
final Root<MyEntity> root = criteriaUpdate.from(MyEntity.class);
Expression trueLiteral = builder.literal(Boolean.TRUE);
update.set(root.get(ProfileClue_.flag), trueLiteral);
final CriteriaBuilder=entityManager.getCriteriaBuilder();
final CriteriaUpdate=builder.createCriteriaUpdate(MyEntity.class);
最终根=criteriaUpdate.from(MyEntity.class);
表达式trueLiteral=builder.literal(Boolean.TRUE);
update.set(root.get(ProfileClue.flag),trueLiteral);
使用比JPA规范要求(由DataNucleus JPA支持,可能还有其他支持)更高级的JPA提供程序,可以将其设置为参数

final CriteriaBuilder builder = entityManager.getCriteriaBuilder();
final CriteriaUpdate<MyEntity> update = builder.createCriteriaUpdate(MyEntity.class);
final Root<MyEntity> root = criteriaUpdate.from(MyEntity.class);
ParameterExpression<String> param = builder.parameter(Boolean.class, "myParam");
update.set(root.get(ProfileClue_.flag), param);
final CriteriaBuilder=entityManager.getCriteriaBuilder();
final CriteriaUpdate=builder.createCriteriaUpdate(MyEntity.class);
最终根=criteriaUpdate.from(MyEntity.class);
ParameterExpression param=builder.parameter(Boolean.class,“myParam”);
update.set(root.get(ProfileClue.flag),param);