hibernate查询同样名字时候出现的奇怪问题!
用以下语句查询表中所有名字为“su”的数据
Session session = HibernateSessionFactory.getSession();
Criteria criteria = session.createCriteria(TUser.class);
criteria.add(net.sf.hibernate.expression.Expression.eq("name", "tu"));
List list = criteria.list();
System.out.println("size is:"+list.size());
for(int i=0;i<list.size();i++){
TUser user = (TUser)list.get(i);
System.out.println("User["+i+"]\t"+user.getName()+"----userid is:"+user.getId()+"----user'age is:"+user.getAge());
}
可惜出现问题了,调试发现:
Hibernate: select this.id as id0_, this.name as name0_, this.age as age0_, this.email as email0_, this.group_id as group_id0_ from t_user this where this.name=?
Hibernate: select address0_.user_id as user_id__, address0_.id as id__, address0_.id as id0_, address0_.address as address0_, address0_.zipcode as zipcode0_, address0_.tel as tel0_, address0_.type as type0_, address0_.user_id as user_id0_, address0_.idx as idx0_ from t_address address0_ where address0_.user_id=? order by address0_.zipcode asc
Hibernate: select address0_.user_id as user_id__, address0_.id as id__, address0_.id as id0_, address0_.address as address0_, address0_.zipcode as zipcode0_, address0_.tel as tel0_, address0_.type as type0_, address0_.user_id as user_id0_, address0_.idx as idx0_ from t_address address0_ where address0_.user_id=? order by address0_.zipcode asc
Hibernate: select address0_.user_id as user_id__, address0_.id as id__, address0_.id as id0_, address0_.address as address0_, address0_.zipcode as zipcode0_, address0_.tel as tel0_, address0_.type as type0_, address0_.user_id as user_id0_, address0_.idx as idx0_ from t_address address0_ where address0_.user_id=? order by address0_.zipcode asc
size is:5
User[0] tu----userid is:78----user'age is:8
User[1] tu----userid is:177----user'age is:2345678
User[2] tu----userid is:181----user'age is:25
User[3] null----userid is:182----user'age is:null
User[4] null----userid is:183----user'age is:null
显然,名字都是"su"的记录有5条,可是,为啥查询到的第四条和第五条记录的user.getName(),会返回null呢?同样,这两条记录的User.getAge()也返回null,
问题出现在哪里呢?
首先我排除一种情况,这两条记录在数据库中,是不为null的!