好的,我有一个带有 List 成员的实体类,它通过 Hibernate 映射到大量对象。我不需要在查询时获取整个列表,我只需要这适用的对象的总大小。
- List 还使用@Where注释来仅选择元素的子集。
- 列表被标记为 @LazyCollection(LazyCollectionOption.EXTRA)由于其非常大
- 映射是通过使用链接表完成的
- List 具有以下类型的映射:
列表的@JoinTable使用表 2 上的连接和表 3 上的反向连接。我不完全确定生成的 SQL 是什么,因为我不太熟悉 SQL。
无论如何, @Where子句会对它有一些限制,例如'STATUS = ACTIVE'和可能的其他一些东西,例如'LETTER = 'A'。如示例所示,如果我进行这样的调用:
列表项 = Lists.getItems(); 物品尺寸();// 这导致 1 带有 @Where 子句的限制
以上使用表 3 中的正确项目填充项目,并受到 @Where 子句的限制。我在不获取整个列表的情况下尝试的第一件事是:
int listSize = Lists.getItems().size(); // 这导致 3,@Where 子句没有被应用
我对其进行了研究,发现 Hibernate 的这个问题我认为尚未解决:Hibernate Jira
所以,我的问题是最好的方法是什么?我还不是很精通 SQL 或 HQL。我对连接和其他数据库术语不太熟悉,所以如果可以提供任何支持,那就太好了。
谢谢!