0
ノードテーブルのすべての行を列挙型の条件付きセットで更新したいとします。ここ は、私が書いたものである:JPA selectCaseを挿入したCriteriaUpdate HEX
private void test(final ID refId) {
final CriteriaBuilder builder = em.getCriteriaBuilder();
final CriteriaUpdate<Node> updateQuery = builder.createCriteriaUpdate(Node.class);
final Root<Node> from = updateQuery.from(Node.class);
updateQuery.set(Node_.status, builder.<Status> selectCase()
.when(builder.equal(from.get(Node_.pk).get(PK_.version), 1), Status.NEW)
.otherwise(Status.CHANGED));
updateQuery.where(builder.equal(from.get(Node_.refId), refId));
em.createQuery(updateQuery).executeUpdate();
}
しかし、列「ステータスが」CHANGED ためNEWまたは4348414e474544ため4e4557のいずれかで終わる進ダンプのいくつかの種類が充填されたクエリを実行した後、。
selectCase()を使わずに列を更新すると、正しい文字列が更新されます。
私はここで運が悪いです(CriteriaUpdateのselectCase()の使い方については何も見つかりませんでした)。クエリを2つに分割したり、ネイティブクエリを使用する必要がありますか?