hibernate如何使用延迟提取引用?

时间:2014-02-18 10:27:30

标签: java hibernate

首先,我将使用hibernate

从数据库中获取一个Game对象列表
List<Game> games = (List<Game>) session.createQuery("from Game where status=2").list();

考虑Game Object具有对Location对象的引用。并且Location对象具有Id。

long id = games.get(0).getLocation().getId();

在这里,我需要知道游戏映射到的位置的ID。并且Location被定义为懒惰提取。但是在数据库中,游戏的每一行都有location_id字段。

所以我的问题是当我请求hibernate通过一个如图所示的对象获取Id时,它首先获取对象然后是Id吗?还是更聪明,直接从游戏中获取Id?

1 个答案:

答案 0 :(得分:0)

它将产生2个陈述。

首先选择游戏,包括Gameid和locationid

Second for the whole location-row包括LocationId。

为什么呢?因为在getLocation()之后,运行时不会知道您只需要id