Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hibernate如何处理惰性获取引用?_Java_Hibernate - Fatal编程技术网

Java hibernate如何处理惰性获取引用?

Java hibernate如何处理惰性获取引用?,java,hibernate,Java,Hibernate,首先,我将使用hibernate从数据库中获取游戏对象列表 List<Game> games = (List<Game>) session.createQuery("from Game where status=2").list(); 这里我需要知道游戏映射到的位置的Id。位置被定义为延迟获取。但在数据库中,游戏的每一行都有location\u id字段 所以我的问题是,当我请求hibernate通过一个对象获取Id时,如图所示,它是先获取对象然后再获取该对象的Id吗?

首先,我将使用hibernate从数据库中获取游戏对象列表

List<Game> games = (List<Game>) session.createQuery("from Game where status=2").list();
这里我需要知道游戏映射到的位置的Id。位置被定义为延迟获取。但在数据库中,游戏的每一行都有location\u id字段


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

它将生成2条语句

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

第二步,选择整个位置行,包括LocationId


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

打开SQL日志,然后自己查看。
long id = games.get(0).getLocation().getId();