如何使用Criteriaupdate设置真实



我有一个具有boolean属性的实体。

class MyEntity {
    @Basic(optional = false)
    @Column(name = "FLAG")
    private boolean flag;
}

如何使用true

执行批量更新设置flag字段
// 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), ???);

使用纯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);

使用更高级的JPA提供商,该提供商支持查询其他部分的参数,而不是JPA规格授权(由Datanucleus 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);

相关内容

最新更新