2016-12-19 6 views
1

私はbooleanプロパティを持つエンティティを持っています。CriteriaUpdateでtrueを設定するにはどうすればいいですか?

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

どのように私はtrueflagフィールドを設定する一括更新を実行することができますか?

// 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), ???); 

答えて

1

私はJPA仕様の義務よりもクエリの他の部分のパラメータをサポートし、より高度な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を使用した(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); 
関連する問題