我有一个主表PURCHASE BILL MASTER
和一个子表PURCHASE BILL DETAILS
。
我在子表中编写了一个impl来获取如下数据:
public IList<PurchaseBillDetails> GetDetailsByInvDate(string FrmDate, string ToDate, int ShopId, int DeptId, int DrugId)
{
ICriteria Query = SessionFactory
.GetCurrentSession()
.CreateCriteria(typeof(PurchaseBillDetails))
.CreateAlias("PurchaseBillMaster", "PBM");
if (FrmDate != string.Empty && FrmDate != null)
{
Query.Add(Restrictions.Gt("PBM.InvoiceDate", Convert.ToDateTime(FrmDate)));
}
if (ToDate != string.Empty && ToDate != null)
{
Query.Add(Restrictions.Lt("PBM.InvoiceDate", Convert.ToDateTime(ToDate)));
}
if (ShopId != 0)
{
Query.Add(Restrictions.Like("PBM.ShopNo", ShopId));
}
if (DeptId != 0)
{
Query.Add(Restrictions.Eq("PBM.DeptId", DeptId));
}
if (DrugId != 0)
{
Query.Add(Restrictions.Like("DrugId", DrugId));
}
Query.Add(Restrictions.Eq("HospitalId", Convert.ToInt32(HttpContext.Current.Session["HospitalId"])));
//Query.AddOrder(Order.Desc("BillDate"));
IList<PurchaseBillDetails> list = Query.List<PurchaseBillDetails>();
return list;
}
我写了这样的映射:
<many-to-one name="PurchaseBillMaster" class="Validus.Pharmacy.Domain.PurchaseBillMaster, HIS.Pharmacy" column="PURCHASE_BILL_ID" insert="false" update="false"></many-to-one>
但问题是它返回重复值一旦物理表在给定日期有3行,但impl给出33因为每行重复这么多次。
如何获得独特的行。请帮忙。
提前致谢。
答案 0 :(得分:0)
您应该告诉您的标准,它应该使用PICTURE_ID
实体转换器过滤掉非唯一实体。
DistinctRootEntity
接下来,我希望看到您的实体的定义,更具体地说是多对多关系。 你是否在这种关系中使用List或Set?