【问题标题】:Hibernate query for two tables两个表的休眠查询
【发布时间】:2013-07-26 00:36:17
【问题描述】:

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

我有两张桌子,假设一张是出口,一张是传单

  • outlet - 网点名称、网点地址、商家名称

  • 传单 - flyerId、flyerName、merchantName

所以传单属于商家,商家有很多网点等,

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

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 的网点列表。

感谢您的帮助

【问题讨论】:

    标签: java sql hibernate


    【解决方案1】:

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

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

    (当然你可以运行两个查询,但我怀疑这就是你要找的。)

    【讨论】:

    【解决方案2】:

    这取决于你的映射,如果有一个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
    

    【讨论】:

    • 嗨,阿米尔和蒂姆,感谢您的建议,但是,我确实需要更多帮助。我确实有一个 Merchant 表,但是当您说两个实体之间的关联以及 Tim 提到的映射到 Merchant 类时,您能否举个例子,它是在 java 类中还是在 hbm 映射中。一个例子会很有帮助。干杯
    • 好吧,你应该去hibernate docs!否则你什么都学不到。
    猜你喜欢
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    相关资源
    最近更新 更多