簡體   English   中英

NHibernate查詢Sql查詢

[英]NHibernate Query for a Sql Query

讓我解釋一下我的情景。 我有一個表HSPartList,它有partName,description,issueNo等。當進行搜索時,我有一個標准應該列出最新issueNo的所有部分。 即。 如果表數據如下:

|PartName| PartDesc| IssueNo|

TestPart1  TestPart1  1
TestPart1  TestPart1  2
TestPart2  TestPart2  1
TestPart2  TestPart2  2

在此示例中,當我搜索最新問題時,它應該僅返回

|PartName| PartDesc| IssueNo|

TestPart1  TestPart1  2
TestPart2  TestPart2  2

我有sql查詢。 我需要將其轉換為nHibernate查詢。

SQL查詢是:

select * from HS_PartList HS where HS.IsLive = 1 and HS.PartName Like '%test%' and IssueNo=(select max(issueNo) from HS_PartList where HS_PartList.PartName=HS.PartName)

NHibernate版本是2.1.2.4000

var subquery = DetachedCriteria.For<Part>()
    .Add(Restrictions.EqProperty("Name", "part.Name"))  <-- part is the alias of the main query
    .SetProjection(Projections.Max("IssueNo"));

var results = session.CreateCriteria<Part>("part")
    .Add(Restrictions.Eq("IsLive", true))
    .Add(Restrictions.Like("Name", teststring, MatchMode.Anywhere))
    .Add(Subqueries.Eq("IssueNo", subquery))
    .List();
  Using Hql it Works fine 
string SearchTerm = "TestPart2";
string search = "and (partdetail.PartName like '%" + SearchTerm + "%') ";
var hql = string.Format(@"select partdetail  from HSPartList as partdetail  where  IssueNo =(select Max(IssueNo)  from HSPartList)") + search;
var context = _session.CreateQuery(hql).List<HSPartList>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM