2017-08-30 4 views
0

hibernateでselectクエリのためにMySQLにregexpを追加する方法。私はajaxデータテーブルを使用しています。私のプロジェクトは春4 MVCで、HibernateはMySQLで動作します。 MongoDBでこれをすでにhibernateで作成していますが、MySQLでの使用方法はわかりません。 MongoDBのコードでHibernate MySQLで正規表現を使用するには?

休止:

Query query = new Query(); 
query.addCriteria(Criteria.where("isDeleted").is(IsDeletedEnum.NOTDELETED)); 
String search = (String) rowStartIdxAndCount[4]; 
if (StringUtils.isNotBlank(search)) { 
    String searchExp = ".*" + search + ".*"; 
    Criteria searchCriteria = new Criteria(); 
    searchCriteria.orOperator(Criteria.where("name").regex(searchExp, "i"), 
     Criteria.where("mobileno").regex(searchExp, "i"), 
     Criteria.where("email").regex(searchExp, "i"), 
     Criteria.where("role").regex(searchExp, "i")); 
    query.addCriteria(searchCriteria); 
} 

と私は、MySQLと休止状態にしようとしています。次に書くべきことは何も分かりません。私は正規表現を名前、mobileno、電子メール、ロールフィールドに追加する必要があります。

Session session = getSessionFactory().openSession(); 
    session.beginTransaction(); 
    String search = (String) rowStartIdxAndCount[4]; 
    String searchExp = ".*" + search + ".*"; 
    String hql ="SELECT * FROM UserBean WHERE isDeleted=isDeleted OR name REGEXP 'searchExp''i'"; 
    Query query = session.createQuery(hql); 
    query.setParameter("isDeleted", IsDeletedEnum.NOTDELETED); 

どうすればよいですか?私を助けてください。

+0

あなたが複数の列に操作を検索する方法を意味するのですか? @Harsh in hibernate –

+0

はい、しかし、または操作と正規表現があります.MongoDBのコードを見ることができます。これは、条件ベースのクエリであり、私はhqlベースのクエリを作成する必要があります。 – Harsh

+0

私にSQLを与えるそれをHQLに変換する。 NoSQL –

答えて

3

基準ずつ行います。その後

criteria1 
.setProjection(Projections.property("name")) 
.add(Restrictions.sqlRestriction("REGEXP pattern") 

criteria2 
.setProjection(Projections.property("mobileno")) 
.add(Restrictions.sqlRestriction("REGEXP pattern") 

criteria3 
.setProjection(Projections.property("email")) 
.add(Restrictions.sqlRestriction("REGEXP pattern") 

criteria4 
.setProjection(Projections.property("role")) 
.add(Restrictions.sqlRestriction("REGEXP pattern") 

がクエリを休止状態にこれらの基準を追加します。

query.addCriteria(criteria1); 
query.addCriteria(criteria2); 
query.addCriteria(criteria3); 
query.addCriteria(criteria4); 
+0

正規表現で(searchExp、 "i")をどのように追加するのですか?私はそれを両方追加しなければなりません。また、HQLクエリベースでそれを作成するための他の方法がありますか? – Harsh

関連する問題