我正在使用Criteria API进行查询,并希望查询包含全文索引的列。
但是在Criteria API中我无法成功找到CONTAINS
。
有没有办法在Criteria中使用CONTAINS
?我使用CreateQuery
并且能够使其工作,但想知道是否有办法使用CreateCriteria
完成它。
任何指向这一点的人都非常感激,因为我一直在寻找这个。
答案 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>();