关于Hibernate的查询问题

07-03-26 Aaroncay
我建有两个表1.职员表(TM_User)2.权限表(TM_Group),TM_User中设gid为外键与TM_Group主键ID关联。

我在用户登陆的时候使用想查找用户权限,我的SQL语句如下:

select g.name from tm_group g, tm_user u where u.gid=(select groupid from tm_user where username='史玮') and u.groupid=g.groupid;

其中'史玮'这个人名是我在判断用户是否登陆的时候存下来的人名。我如果在Hibernate中如何实现上述SQL语句啊?是不是得做一个权限对应好多职员的one-to-many关联?

我还没做过这样的关联呢,哪位大侠帮我看看吧。谢谢

banq
2007-03-26 17:03
>我如果在Hibernate中如何实现上述SQL语句啊?

我个人也不会,因为,我的思路和你不一样,你是脑子里先有“SQL语句”这样的数据库要求,然后,你试图通过hibernate配置反向导出对象的关联关系。

我的OO思路是:先根据需求设计出模型对象的关联关系,然后再使用hibernate配置到处数据库结构,这样我觉得才符合hibernate本身之道。

而象你这样逆向思维虽然最终可以得到结果,但是我认为已经南辕白澈,而且很费脑子,没有太多意义,希望有其他人能够帮助。

贴一篇文章供你参考:

数据库时代的终结

http://www.jdon.com/artichect/dbover.htm

Aaroncay
2007-03-27 12:50
我建的权限关系是:

<set name="tmuser" table="tm_user">

<key column="groupid"/>

<one-to-many

class="TmUser"/>

</set>

pojo是:

private Set tmuser = null ;//对应员工表

public Set getTmuser() {

return tmuser;

}

public void setTmuser(Set tmuser) {

this.tmuser = tmuser;

}

但我业务上用Set 不知道怎么用(根据员工名查找对应权限)

//集合例子:我想根据用户名查询其部门

public String setDemo(String name)

{

String groupname = null ;

// Set s = new HashSet() ;

hql = "select tg.groupname from TmGroup tg,TmUser tu where tu.groupid=tg.groupid and tu.user=?" ;

Query q = this.session.createQuery(hql) ;

q.setString(0,name) ;

//怎么来接收啊??

//groupname = ?? ;

return groupname ;

}

猜你喜欢