CreateCriteria包含限制

时间:2017-08-21 09:54:02

标签: hibernate nhibernate criteria hibernate-criteria criteria-api

我正在使用Criteria API进行查询,并希望查询包含全文索引的列。

但是在Criteria API中我无法成功找到CONTAINS

有没有办法在Criteria中使用CONTAINS?我使用CreateQuery并且能够使其工作,但想知道是否有办法使用CreateCriteria完成它。

任何指向这一点的人都非常感激,因为我一直在寻找这个。

1 个答案:

答案 0 :(得分:1)

我们可以使用 Criterion.Expresssion.Sql 生成自定义SQL部件。 (有example how to

这可能是我们案例中的方式

var searchedValue = "searched value";

var session = ... // get session 

// dynamic way to construct some SQL part
var criterion = NHibernate.Criterion.Expression
    .Sql(" CONTAINS ({alias}.LastName, ? ) ",
        new object[] { searchedValue},
        new IType[] { NHibernate.NHibernateUtil.String});

// our criteria
var criteria = session.CreateCriteria<MyEntity>();

// with our FULLTEXT filter
criteria.Add(criterion);

// result..
var list = criteria
    .SetFirstResult(0) // paging
    .SetMaxResults(10)
    .List<MyEntity>();