java – QueryDsl – 具有字符串值的case表达式
QueryDsl 3.3.4
Hibernate 3.6.10-最终版 我有两个实体: public class Document { private Confirmation confirmation; } public class Confirmation { ... } 我需要这样的查询: SELECT count(d.id),CASE WHEN d.confirmation_id IS NULL then 'NOT_CONFIRMED' else 'CONFIRMED' END as confirmed FROM document d GROUP BY confirmed; 所以它应该按照上面的case表达式的结果进行分组. StringExpression confirmExp = new CaseBuilder() .when(Expressions.booleanTemplate("confirmation_id is null")) .then(Expressions.stringTemplate("NOT_CONFIRMED")) .otherwise(Expressions.stringTemplate("CONFIRMED")); 我正在使用.when(Expressions.booleanTemplate(“confirmation_id为null”))以避免加入确认表.
解决方法
如果您想在查询中使用字符串文字,则需要将其写为
StringExpression confirmExp = new CaseBuilder() .when(Expressions.booleanTemplate("confirmation_id is null")) .then(Expressions.stringTemplate("'NOT_CONFIRMED'")) .otherwise(Expressions.stringTemplate("'CONFIRMED'")); Expressions.stringTemplate并不意味着参数被序列化为String文字,但创建的表达式的类型为java.lang.String. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |