Java 标准生成器don';t粘贴函数参数

Java 标准生成器don';t粘贴函数参数,java,hibernate,Java,Hibernate,这是我从CriteriaBuilder获得的hibernate查询: select generatedAlias0 from MyObject as generatedAlias0 where 1=1 order by COLLATION_KEY(lower(generatedAlias0.mycol), :param0) asc :param0应解析为UCA400R1,但它被解析为:param0。问题在哪里 cb.function("COLLATION_KEY', String.class,

这是我从CriteriaBuilder获得的hibernate查询:

select generatedAlias0 from MyObject as generatedAlias0 where 1=1 order by COLLATION_KEY(lower(generatedAlias0.mycol), :param0) asc
:param0
应解析为
UCA400R1
,但它被解析为
:param0
。问题在哪里

cb.function("COLLATION_KEY', String.class, cb.lower(orderExpression), cb.literal("UCA400R1"));

该行为由
LiteralHandlingMode
驱动,该模式有3个设置:

自动
Criteria查询对任何非数值的文本使用绑定参数。如果未明确指定配置,则这是默认行为

绑定
用于增加JDBC语句缓存的可能性,您可能也希望对数值使用绑定参数。
BIND
模式将对任何文本值使用绑定变量

内联
模式将按原样内联文本值。为防止SQL注入,切勿对字符串变量使用
INLINE
。始终在
INLINE
模式下使用常量


要调整默认设置,请相应地设置
hibernate.criteria.literal\u handling\u mode

以及如何调整literal handling mode?通过在属性文件或java代码中传递
hibernate.criteria.literal\u handling\u mode=INLINE