Tôi đang cố gắng để chuyển đổi lĩnh vực boolean sử dụng HQL sau:phủ nhận unary nhà điều hành trong Hibernate QL
update Entity e set e.booleanField = not e.booleanField where e.id = ?1;
Thật không may "QuerySyntaxException: dấu hiệu bất ngờ: không gần ..." bị ném.
Câu hỏi của tôi là: có một số toán tử đơn nhất cho hibernate hỗ trợ biểu thức như vậy không? Hoặc bất kỳ thủ thuật nổi tiếng nào?
sql hỗ trợ truy vấn như vậy (postgresql):
update entity_table set booleanField = not(booleanField);
[Giả sử] (http://docs.jboss.org/hibernate/orm/3.3/ reference/en/html/queryhql.html # queryhql-expressions) HQL hỗ trợ 'not' trong các biểu thức, nhưng tôi không chắc liệu điều đó có áp dụng cho các biểu thức bên ngoài mệnh đề' where' hay không. Bạn có thể muốn thử một hack phổ biến 'set e.booleanField = 1 - e.booleanField' để giải quyết vấn đề này. – dasblinkenlight
Xin lỗi, không hoạt động. "ERROR: toán tử không tồn tại: số nguyên - boolean" –
Đây là một cách hack khác để diễn tả 'NOT':' đặt e.booleanField = (e.booleanField == false) '. – dasblinkenlight