有两张表A:(aid/PK,aname)--> A(100,张三) --> 持久类:private Integer aid; private Stirng aname;
B:(bid/PK,aid/FK) --> B(1,100) --> 持久类:private Integer bid; private A a;
通过执行hibernate的HQL查询语句。
Query q = session.createQuery("如何写这个HQL语句");
List list = q.list();
...
request.setAttribute("list", list);
要得到这样的结果bid,aname(1,张三);
而在show.jsp页面上如何正确显示(1,张三)。注:要的是(1,张三)而不是(1,100)。
<logic:present name="list" scope="request">
<logic:iterate id="list" name="list" scope="request">
<bean:write name="list" property="bid"/>
<bean:write name="list" property="这里要什么写才能显示为:张三,而不是100" />
</logic:iterate>
</logic:present>
在线等
B:(bid/PK,aid/FK) --> B(1,100) --> 持久类:private Integer bid; private A a;
通过执行hibernate的HQL查询语句。
Query q = session.createQuery("如何写这个HQL语句");
List list = q.list();
...
request.setAttribute("list", list);
要得到这样的结果bid,aname(1,张三);
而在show.jsp页面上如何正确显示(1,张三)。注:要的是(1,张三)而不是(1,100)。
<logic:present name="list" scope="request">
<logic:iterate id="list" name="list" scope="request">
<bean:write name="list" property="bid"/>
<bean:write name="list" property="这里要什么写才能显示为:张三,而不是100" />
</logic:iterate>
</logic:present>
在线等
如何写这个HQL语句:from A a,B b where a.id=b.getA.getId();
property="这里要什么写才能显示为:张三,而不是100:这个问题就好办了 你放在里就拿呀,建议你用之前封装一下对象
应该是inner join
:(
2楼所说的,我也想过,重新封装一个对象,替换赋值。
可是这样子是不是感得没办要做这么多的工作。往往是我就想替换一个属性,也要重新封装一个对象。
不知hibernate关联操作,有没有其它的设置,可以一下就能通过主键找到相应的替换。
继续关注有没有再好的解决方法
大家帮忙,谢谢!
像2楼说的,对得到的结果集再进行一下封装,然后,再在页面里显示。对,这是可以做到的,但是总觉这要做是不是多余的。有没有更好的办法。望高手们帮忙解答
String sql = select a.* from A as a JOIN B as b ON a.aid = b.aid;
SQLQuery sqlQuery = this.session.createSQLQuery(sql).addEntity(A.class);
List list = sqlQuery.list();
还有,我想用HQL语句来实现,因为封装在了一个公共的类里了。
方法嘛
用join或是多表查询都可以