You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写MySQL(Hibernate)查询语句获取单个湖泊的所有预订记录

关联查询解决方案

以下分别提供原生MySQL、Hibernate两种场景的查询写法:

1. 原生MySQL查询

通过表关联匹配指定湖泊ID即可,语句如下:

-- 替换下方的[目标湖泊ID]为你要查询的实际湖泊id值
SELECT r.* 
FROM Reservation r
INNER JOIN Peg p ON r.peg_id = p.id
INNER JOIN Lake l ON p.lake_id = l.id
WHERE l.id = [目标湖泊ID];

如果你确认传入的lake_id为合法存在值,也可以省略Lake表的关联,直接通过peg的lake_id过滤,性能更优:

SELECT r.* 
FROM Reservation r
INNER JOIN Peg p ON r.peg_id = p.id
WHERE p.lake_id = [目标湖泊ID];

2. Hibernate查询

前提是你的实体类已经配置好正确的关联注解:Peg实体添加@ManyToOne关联Lake,Reservation实体添加@ManyToOne关联Peg。

HQL写法

SELECT r FROM Reservation r WHERE r.peg.lake.id = :targetLakeId

调用时传入参数即可:

Query query = session.createQuery(hql语句);
query.setParameter("targetLakeId", 你要查询的湖泊ID值);
List<Reservation> result = query.list();

注解式查询(Spring Data JPA场景)

如果是使用Spring Data JPA封装的Hibernate,可以直接在Repository接口中定义查询方法:

List<Reservation> findAllByPeg_Lake_Id(Integer targetLakeId);

内容的提问来源于stack exchange,提问作者Dawid Sieradzki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:45:03