关于hibernate多对多中间表的查询

user和role是多对多的关系,他们产生了个中间表userRole。user的属性有userId,userName等等,role的属性有id,name。userRole... user和role是多对多的关系,他们产生了个中间表userRole。user的属性有userId,userName等等,role的属性有id,name。userRole有两个属性,一个是user_id对应user的userId,一个是role_id对应的是role的id。
我是用的反向工程,生产的POJO类一共有四个。User.java对应user表,Role.java对应role表。还产生了一个UserRoleId.java,里面有两个属性:user和role。UserRole.java里面只有一个属性:返回值为UserRoleId的id。
现在我知道一个确切的userId的值,想要运用HQL查询对应的一条中间表的记录。我是这么写的:
this.getHibernateTemplate.find("from UserRole as a where a.id.user.userId = ?",userId);可是查询到的却是空值,哪位高手可以告诉我应该如何操作呢?感激不尽,3Q~~
展开
 我来答
社伶晨
2011-02-12 · TA获得超过247个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:179万
展开全部
多对多中间表一般不用这种处理方式,首先中间表是没有唯一的主键作为标识,更新信息的时候,hibernate可能出现错误更新或者异常。
通常反向工程的时候不选择中间表,next以后勾选一个many-to-many的选项(让myeclimpse自动去嗅探多对多关系,然后分解成2个一对多的关系)。生成的pojo类里面就会比原有的pojo类多一个集合。比如,User类里面会有一个Role类的set集合,Role类里面有一个User类的set集合。
直接用hibernate获取到指定的user,程序里面foreach迭代一下set集合,OK....
建议LZ去补下hibernate里面有关级联的知识。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cosisis
2011-02-11 · TA获得超过1265个赞
知道小有建树答主
回答量:589
采纳率:100%
帮助的人:220万
展开全部
Query query = this.getSession().createQuery("from UserRole as a where a.id.user.userId = ?");
List list = query.list();
这样试一下,把?替成具体的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式