SQL заменить в HQL - PullRequest
       8

SQL заменить в HQL

1 голос
/ 12 апреля 2011

Любая идея, почему этот фрагмент HQL не работает. Функция REPLACE требует трех аргументов - это ошибка.Есть ли другой способ выполнить замену в HQL>?

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

1 Ответ

0 голосов
/ 21 февраля 2017

HQL не поддерживает функцию ЗАМЕНА.

Таким образом, вы должны создать свой собственный диалект и зарегистрировать в нем функцию REPLACE Dialect :: registerFunction method

Например, я регистрирую REPLCAE на postgres диалекте, как в следующем коде

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...