by agate - Published: 2008-04-06 [4:38 下午] - Category: 程序编码

今天郁闷了2个小时,不停地试验,就是没成功……(试验什么呢?)就是这个,用HQL来查出一个List,条件是某个字段为空。

两个领域类:

public class User {
	private String username;
	private Group group;
	// ------------- setter
	// ------------- getter
}
public class Group {
	private String groupName;
	private List<User> users;
	// ------------- setter
	// ------------- getter
}

让你查数据库中所有group为空的(即加入组的)所有用户。

考!我们搞程序的难道这个都不会啊?嘿!你别说……我就他妈地试验了2个小时。不就是一个简单地使用HQL嘛!由于我是用Spring整合了Hibernate,所以就用了Spring的HibernateTemplate来快速开发。

我首先写了:

String hql = "from User as u where u.group=?";
return getHibernateTemplate().find(hql, null);

好了,多么明白的一句话啊!哈哈……错了(Debug查看返回的List的size为0)~恩……是不是不能用等于号"="来匹配啊?于是我又写了:

String hql = "from User as u where u.group is ?";
return getHibernateTemplate().find(hql, null);

哈哈!好了!结果……(Debug查看返回的List的size为0)~ 8是吧……是不是要用其他的匹配词啊?于是我再次操刀写了:

String hql = "from User as u where u.group like ?";
return getHibernateTemplate().find(hql, null);

我都开始怀疑我是程序员了……竟然会用 like 匹配……我笑笑地试了一下。废话,当然还是失败了(Debug查看返回的List的size为0)。啊啊啊啊啊啊啊啊!shit!我打电话给了朋友,问他到底怎么办(他们公司推行Hibernate的开发)。结果他说啥:“一般不会查空的值吧……我不知道……你再试试看,好了告诉我怎么弄……”我差点没昏过去……

突然间,我灵光乍现“我他妈的就把HQL写死了,难道他还不出来?”

String hql = "from User as u where u.group is null";
return getHibernateTemplate().find(hql);

他妈的成功了……不过确实差异。时候我上网有心地留意了这方面的东西,发现有一个人他是使用Hibernate原生的Session进行查询也是在设置传入参数中输入了null,结果也是没有得到正确的结果,比较诧异啊!

总之,不管如何,功能是实现了~值得“庆幸”

Tags: [ , , , ] - Comments: View Comments
blog comments powered by Disqus