如果是我:1.list一般不会放在session,只传到页面就可以了
2.user和group要做映射关系,hql就会变成from user u where u.email like ?
3.jsp的tag我更喜欢jstl你的问题:(String)request.getParameter("para")这是什么?应该是你的list
而且,照你的hql来看list中只是结果集,不是对象集hibernate的体会不够,把真髓丢弃了好久没写程序了,可能有不对的地方,见谅
2.user和group要做映射关系,hql就会变成from user u where u.email like ?
3.jsp的tag我更喜欢jstl你的问题:(String)request.getParameter("para")这是什么?应该是你的list
而且,照你的hql来看list中只是结果集,不是对象集hibernate的体会不够,把真髓丢弃了好久没写程序了,可能有不对的地方,见谅
对,您说的完全对,是结果集,而非对象集!!!这是症结所在!
可是如果是数据库设计的话,是完全应该这样设计的,比如user这个数据库中有一个groupid字段,用来标明user所在的group,一般没有设定groupname为关联字段的吧。请问,有没有什么办法,进行多表的关联,还要能取得list中的值?或者说保存成对象集?2。
我的这个程序是将List放到session中的,应该说是将最多26个List放在session中。我知道这是个问题,因为初始化的时候就要对26个英文字母中的每个进行一次模糊查询,查询的是email字段,如果有以某个字母开头的email,就将这个英文字母输出的时候加上超级链接,我想得办法是;进行26次查询,将结果(都为List)都以某个英文字母为名,放到session中,输入的时候进行一次检验,如果存在,加上超链接。还要实现的功能是,如果点击有超链接的字母要显示出相应的字段名,就如前一个问题的NUser.name ,NUser.email ,NGroup.name 的问题,我又将前面保存的Lists再利用,虽然我知道这样很浪费资源,但是我想不到更好的办法,而且时间比较紧张,如果您有好的注意,请不吝赐教,多谢!
您说得很对,但是我现在没有很多时间来看文档,这个问题困扰我很久了,是关于hibernate的映射关系,如果可能的话,请给我一个例子,最好是具体的程序。上面的问题已经解决了:1. 在NUser持久对象(bean)中,加入一个groupname属性,及其setter.getter方法。
2. 在NUser持久对象中加入如下构造函数:
public AbstractNUser(String name ,String email,
String groupname){
this.name=name;
this.email=email;
this.groupname=groupname;
}
3.在DAO层中,将查询数据库的hql语句书写如下:
public List findByKanaIni(String x){
String hql = "from NUser nuser";
String query =
"select new NUser(nUser.name,nUser.email,nGroup.groupname) " +
"from NUser as nUser,NGroup as nGroup " +
"where nUser.groupid = nGroup.groupid and upper(nUser.kana) like ?";
String key = x.toUpperCase()+"%"; List list = null;
try{
list = this.getHibernateTemplate().find(query,(Object)key);
}catch(Exception e){
log.error("find example by kana initial failed", e);
return null;
}
return list;
}