0
我想用一個Enum條件集更新我的節點表的所有行。 這裏是我寫的:帶有selectCase插入的JPA 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();
}
但執行列「狀態」充滿了某種形式的十六進制轉儲的查詢後結束或者4e4557爲新或4348414e474544爲CHANGED。
如果我更新沒有selectCase()的列,則更新正確的String。
updateQuery.set(Node_.status, Status.CHANGED);
我在這裏運氣不好(因爲我沒有在CriteriaUpdate中找到關於selectCase()的用法的任何信息)。我是否必須將查詢分解爲兩個或使用本地查詢?