首先,我将使用休眠从数据库获取游戏对象列表
List<Game> games = (List<Game>) session.createQuery("from Game where status=2").list();
假设游戏对象具有对位置对象的引用。位置对象有一个 Id。
long id = games.get(0).getLocation().getId();
在这里,我需要知道游戏映射到的位置的 ID。位置被定义为延迟获取。但是在数据库中,游戏的每一行都有location_id字段。
所以我的问题是,当我请求休眠通过如图所示的对象获取 Id 时,它是首先获取对象,然后获取该对象的 Id? 还是更智能并直接从游戏中获取 Id?
它将生成 2 个语句。
首先选择游戏,包括游戏 ID 和位置 ID
其次,选择整个位置行,包括位置 ID。
为什么?因为getLocation()
之后运行时不会知道你只需要id
。