我是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的商店列表。
感谢任何帮助
答案 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