
2005年6月15日
在使用HQL查询中,有时并不需要获取完整的一个实体对象,例如一个实体对象User有三个属性:account, password和email,如果我们只需要获取account和email属性,那么有两种方法可以选择。
1. 用普通的"select user.account, user.email from User as user",程序片断如下:
List list = session.createQuery("select user.account, user.email from User as user").list();
Iterator it = list.iterator();

while (it.hasNext())
{
Object[] values = (Object[]) it.next();
System.out.println(values[0] + " " + values[1]);
} 这时调用Query类的list方法返回的将是一个每个元素都是一个Object数组的List。如果只获取一个属性,那么返回的List中的每个元素都是String实例。
2.在HQL中用new操作符生成实体对象,例如:"select new User(user.account, user.email) from User as user",程序片断如下:
List list = session.createQuery("select new User(user.account, user.email) from User as user").list();
Iterator it = list.iterator();

while (it.hasNext())
{
User user = (User) it.next();
System.out.println(user.getAccount() + " " + user.getEmail());
} 这时list方法返回的List中的每一个元素都是User实体对象。这里有三点需要注意的:
a.在HQL语句中需要使用as操作符指定User的别名,并且需要在构造函数的属性前面加上别名;
b.HQL语句中的构造函数在User类中必须要有相应的构造函数;
c.生成的实体对象是VO对象,如果对这些对象调用Session的saveOrUpdate方法将导致插入新的记录,而不是更新记录。
posted @
2005-06-15 16:33 小米 阅读(686) |
评论 (0) |
编辑 收藏
JBuilder 2005中多了一个Smart MemberInsight功能,这个功能会智能的匹配需要调用的方法或者获取的属性。例如有一个赋值操作,左边是一个List,右边是用一个方法获取值,那么当输入"."时,JBuilder 2005会自动的找到所有返回的值为List的方法。
不过,这实在是一个不怎么讨好的方法。因为很多时候并不是只有一层方法调用的,例如,当需要用一个方法获取一个实例,然后再用这个实例的方法获取需要的值时,这个功能就显得很碍手了。
终于,我还是决定关闭这个“智能”的功能。打开"Tools"——>"Preferences",在"Editor"的子项"CodeInsight"里,展开"MemberInsight",把"Default to Smart MemberInsight"这一项去掉。如下图所示:
posted @
2005-06-15 16:02 小米 阅读(286) |
评论 (0) |
编辑 收藏
小米,生活在深圳,专注于Java,主要从事数据库和网页编程。现在在学习着Hibernate和Spring。喜欢游戏、音乐和台球。联系方式:georgehill@21cn.com
|
|
| 29 | 30 | 31 | 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 1 | 2 |
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
常用链接
留言簿(21)
随笔分类
随笔档案
文章分类
文章档案
我的朋友们
我的链接
搜索
积分与排名
最新评论

阅读排行榜
评论排行榜