4

この質問をして、MySQL と Hibernate が正規表現でどのように連携するかを示します。

問題:

SELECT * FROM table WHERE regexp column '\d'

解決:

私の答えに行きます。

お役に立てれば。

4

3 に答える 3

5

基本的に、Hibernate で MySQL 正規表現関数を使用するには、"SQLFunctionTemplate" を作成する必要があります。

さて、それを行う方法:

最初に: 「AppMySQLDialect」というクラスを作成し、MySQLDialect から拡張してから、空のコンストラクターをオーバーライドし、最後に正規表現関数を登録します。

public class AppMySQLDialect extends MySQLDialect {
    public AppMySQLDialect() {
        super();
        /**
         * Function to evaluate regexp in MySQL
         */
        registerFunction("regexp", new SQLFunctionTemplate(Hibernate.INTEGER, "?1 REGEXP ?2"));
    }
}

さて、次のように使用しましょう。

FROM Entity E WHERE regexp(E.string2evaluate, '\d') = 1

HibernateQuery を作成して実行します。

于 2013-07-17T14:29:26.477 に答える
2
String range = "ABCD";

List<HRTrainee> hrTrainees =
      (List<HRTrainee>)sessionFactory.getCurrentSession().createCriteria(HRTrainee.class)

.add(Restrictions.sqlRestriction("name REGEXP '^["+range+"]'")).list();

return hrTrainees;
于 2015-08-19T14:46:38.187 に答える