任何想法为什么这个HQL片段会失败.. REPLACE函数需要三个参数才是错误。有没有其他方法可以在HQL中执行替换>?
“WHERE :url LIKE ('%' || REPLACE(atf.title,'*','') || '%')" +
答案 0 :(得分:0)
HQL不支持REPLACE功能。
所以你必须制作自己的自定义方言并通过 Dialect :: registerFunction 方法
将REPLACE函数注册到其中例如,我在postgres方言中注册REPLCAE,如下一个代码
import org.hibernate.dialect.PostgreSQL9Dialect;
import org.hibernate.dialect.function.StandardSQLFunction;
public class MyPostgreSQL9Dialect extends PostgreSQL9Dialect {
public MyPostgreSQL9Dialect() {
super();
registerFunction("replace", new StandardSQLFunction("replace"));
}
}
然后在persistence.xml或hibernate.cfg.xml文件中引用此自定义方言