HQL中的SQL替换

时间:2011-04-12 11:02:27

标签: hibernate hql

任何想法为什么这个HQL片段会失败.. REPLACE函数需要三个参数才是错误。有没有其他方法可以在HQL中执行替换>?

WHERE :url LIKE ('%' || REPLACE(atf.title,'*','') || '%')" +

1 个答案:

答案 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文件中引用此自定义方言