【发布时间】:2016-02-17 19:44:52
【问题描述】:
我正在尝试在我的 Java EE 应用程序中实现“跟随机制”。 我有一个实体配置文件,其中包含一个列表,它是用户遵循的配置文件的列表。 Le 关系是 (@OneToMany)。
一切都很好,听起来很棒,但我有一个问题。像这样的查询:
Query q = em.createQuery("SELECT p FROM Profile p WHERE p.id =:custId");
返回一个 Profile p,到目前为止,没问题。但我注意到我拥有我的关注用户的完全访问权限,以及我所有关注用户的关注,等等。 我看不出有出路。
我可以替换仅包含 id 的数组中的 List,但前提是它是唯一的选择。 有任何想法吗? 我可以通过不让她获取我的每个关注用户的关注列表来“停止”查询吗?
【问题讨论】:
-
需要更多信息才能提供帮助。可能您的查询是使用急切加载策略执行的,您可以搜索一下如何将其更改为延迟加载。
-
是的,您可以访问(假设会话仍处于打开状态),但默认情况下是按需获取它们。因此,除非您明确配置了 Eager fetch,否则默认情况下不会加载关联。打开 Sql 日志以查看正在获取的内容。
-
@AlanHay 我认为你是对的。我被所选数据的数量吓到了,但我不再害怕了。感谢您的解释!
标签: java jakarta-ee entity createquery