Hibernate HQL中的SQL替换

Hibernate HQL中的SQL替换,hibernate,hql,Hibernate,Hql,你知道为什么HQL的这个片段会失败吗。。REPLACE函数需要三个参数是错误的。在HQL>中是否有其他方法执行替换 “WHERE:url-LIKE(“%”| | REPLACE(atf.title,“*”,“)| |”%”)+HQL不支持REPLACE函数 因此,您必须创建自己的自定义方言,并通过方言::registerFunction方法将REPLACE函数注册到其中 例如,我正在用postgres方言注册REPLCAE,就像在下一个代码中一样 import org.hibernate.dia

你知道为什么HQL的这个片段会失败吗。。REPLACE函数需要三个参数是错误的。在HQL>中是否有其他方法执行替换


WHERE:url-LIKE(“%”| | REPLACE(atf.title,“*”,“)| |”%”)+
HQL不支持REPLACE函数

因此,您必须创建自己的自定义方言,并通过方言::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文件中引用此自定义方言

您好,您到底遇到了什么错误?我不明白:url,不应该是“where url like…”:url是代码中其他地方使用的替换字符串。错误如前所述:“REPLACE函数需要三个参数”重构了整个过程以绕过它。这是一个更好的解决方法。