两个表的Hibernate查询

时间:2013-07-26 00:36:18

标签: java sql hibernate

我是hibernate的新手,所以我很确定你们中的一些人会对这个问题感到好笑。它一直让我发疯。这是一个休眠查询问题。

我有两张桌子,假设一张是插座,一张是传单

  • outlet - outlet name,outlet address,merchantName

  • 传单 - flyerId,flyerName,merchantName

因此传单属于商家,商家有许多商店等,

使用hibernate来获取一个简单的查询,比如使用merchantName从outlet表中获取不同的出口,我使用代码:

public List<Outlet> getDealOutlet(@PathParam("merchant") String merchant) {

some code here....

outletsList = session.createQuery("from Outlet as outlet where outlet.merchantName =      :merchant").setString( "merchant", merchant ).list(); 

some code here 

}

这很有效。

我的问题是如何返回特定flyerId的商店列表。

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

问题是“如何返回与特定flyerId关联的商家的商店列表?”

如果是这样,您是否有一个映射到商家类的表商家?这是走下去的道路; Hibernate可以很容易地让你跨连接查询,但是如果Hibernate不知道连接,因为你所拥有的只是一个名为merchantName的魔术字符串,你知道在两个表中恰好相同,那么Hibernate无法帮助你。

(虽然你当然可以运行两个查询,但我怀疑这是你正在寻找的。)

答案 1 :(得分:0)

这取决于您的映射,如果有Merchant个实体,并且其他两个实体都与它有关联,则可以写成:

select o
  from Outlet o
  join o.merchant m
  join m.flyers f
 where f.id = :flyersId

另外,你可以像在SQL中那样做:

select o
  from Outlet o, Flyers f
 where o.merchant = f.merchant and f.id = :flyersId