现有三张表a(用户表),b(产品表),c(订单表)
a表里的字段为userid(用户名),company(用户公司名);用户既可以作为卖家,也可以作为买家
b表里的字段为pid(所卖产品编号),uid(卖家名(即同a表的userid关联)),pn(产品名称),pc(产品简介);
c表里的字段为pid(所买产品编号,同b表里的pid关联),uid(买家名(即a表的userid))用hibernate的HQL语句如何写,才能实现查询所有卖的产品、某个用户卖的所有产品(根据卖家userid查询)和某个用户买的所有产品(根据pid)
以上三个HQL语句,要求能在页面上只通过一个<logic:iterate id=one name="list" >遍历显示出company(卖家)、pn、pc,
即以下这种效果:<logic:iterate id=one name="list" >
${one.company};${one.pn};${one.pc};<br>
</logic:iterate >
另外问个问题,HQL语句能否像SQL一样进行多表查询,把不同的表的有用的字段组合在一起,然后在页面上显示啊如“from a as aa where aa.a1=b.a1 and aa.a1=1 ”或“select aa.a2,b.b2 from a as aa,b where aa.a1=b.a1 and aa.a1=1 ”再或有什么其他的方法(in子查询等)
a表里的字段为userid(用户名),company(用户公司名);用户既可以作为卖家,也可以作为买家
b表里的字段为pid(所卖产品编号),uid(卖家名(即同a表的userid关联)),pn(产品名称),pc(产品简介);
c表里的字段为pid(所买产品编号,同b表里的pid关联),uid(买家名(即a表的userid))用hibernate的HQL语句如何写,才能实现查询所有卖的产品、某个用户卖的所有产品(根据卖家userid查询)和某个用户买的所有产品(根据pid)
以上三个HQL语句,要求能在页面上只通过一个<logic:iterate id=one name="list" >遍历显示出company(卖家)、pn、pc,
即以下这种效果:<logic:iterate id=one name="list" >
${one.company};${one.pn};${one.pc};<br>
</logic:iterate >
另外问个问题,HQL语句能否像SQL一样进行多表查询,把不同的表的有用的字段组合在一起,然后在页面上显示啊如“from a as aa where aa.a1=b.a1 and aa.a1=1 ”或“select aa.a2,b.b2 from a as aa,b where aa.a1=b.a1 and aa.a1=1 ”再或有什么其他的方法(in子查询等)
a:userId 、company
b:pId、pn、pc、userId、SaleOrBuy(买还是卖)
这样3个查询都很简单了 2.可以用SQLQuery,比较灵活点,直接用SQL语句然后用object[][]转
最简单方法:
Hibernate 自动封装对象方法!先在你的A类的pojo加上pn,pc属性!然后加上一个构造方法 public A(String company,String pn,String pc){
this.company = company;
............
}
然多HQL的写法:select new A(a.company,b.pn,b.pc) from A a,B b where 你的条件!
然后调用Hibernate的list方法,这样Hibernate就可以自动封装A对象!你就可以把list<A>传给表现层!
!
个人认为hibernate就这点在查询做的还可以!其他我就不多说Hibernate咋烂拉!
HQL查询类似SQL查询
HQL 有 连接查询 但是 连接 正如 楼上所说的
连接要根据你的配置的 是面向对象的