首页 新闻 会员 周边

NHibernate的 ICriteria条件查询问题,外键为null时查询不出数据了为什么?

0
悬赏园豆:50 [已解决问题] 解决于 2011-07-03 20:15

A表对应的外键(B表)可以为null,所以数据是中外键的ID是null,条件查询就不会显示数据,但是我用

this.HibernateTemplate.LoadAll<T>();
查询的时候,就可以查询出A表的信息,这是为什么?还有问问各位大侠,你们是怎么学习NHibernate的?

问题补充:

ICriteria criteria = session.CreateCriteria(typeof(WareHouseArea), "wha");
//
criteria.CreateAlias("wha.WareHose", "h");

string areaCode = context.GetValue<string>("AreaCode");

string areaName = context.GetValue<string>("AreaName");

string remark = context.GetValue<string>("Remark");

long wareHouseId = context.GetValue<long>("WareHouseId");

if (!string.IsNullOrEmpty(areaCode))
{
criteria.Add(Expression.Like(
"wha.AreaCode", areaCode, MatchMode.Anywhere));
}

if (!string.IsNullOrEmpty(areaName))
{
criteria.Add(Expression.Like(
"wha.AreaName", areaName, MatchMode.Anywhere));
}

if (!string.IsNullOrEmpty(remark))
{
criteria.Add(Expression.Like(
"wha.Remark", remark, MatchMode.Anywhere));
}

if (wareHouseId!=0)
{
criteria.Add(Expression.Eq(
"h.Id", wareHouseId));
}


count
= criteria.SetProjection(Projections.Count("Id").SetDistinct()).UniqueResult<int>();

if (count == 0)
{
return new List<WareHouseArea>();
}
这种查询方式,外键NULL的情况下,是查询不出A表信息的。怎么才能解决呢?

Agile45的主页 Agile45 | 初学一级 | 园豆:130
提问于:2011-06-25 09:58
< >
分享
最佳答案
0

你用了左连接

收获园豆:50
李永京 | 老鸟四级 |园豆:3114 | 2011-06-27 11:32
是的右连接就可以了,但是现在是我们null转换json不行。
未将对象实例化。
Agile45 | 园豆:130 (初学一级) | 2011-06-27 15:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册