当前位置: 首页 > 知识库问答 >
问题:

嵌套集合上的预测

鲜于仰岳
2023-03-14

我有三个实体主题、主题和类别。在检索包含主题和主题的所有类别时,如何预取每个实体的id和名称列?我不需要其他字段,因为它会影响性能。

@Entity
class Topic{
  private Long id;
  private String name;
  ...
  //other fields
} 

@Entity
class Subject{
  private Long id;
  private String name;
  ...
 //other fields

  @OneToMany(fetch=FetchType.LAZY)
  private List<Topic> topics;
}

@Entity
class Category{
  private Long id;
  private String name;
  ...
  //other fields
  @OneToMany(fetch=FetchType.LAZY)
  private List<Subject> subjects;
}

共有1个答案

云洋
2023-03-14

我建议在投影本身之上创建一个结果类,因为它简化了结果集的处理。ResultClass需要有一个具有相关查询结果字段的构造函数,并且您必须在查询本身中使用完全限定的名称。

select new org.mypkg.ResultClass(c.id, c.name, s.id, s.name, t.id, t.name)
from Category c
  inner join c.subjects s
  inner join s.topics

然后你只需:

List<ResultClass> results = em.createQuery(query).list();
 类似资料:
  • 问题内容: 我在Scala和Java之间遇到编译问题。 我的Java代码需要一个 我的scala代码有一个 我收到编译错误: 似乎scala.collection.JavaConversions不适用于嵌套集合,即使Vector可以隐式转换为Iterable。除了遍历scala集合并手动进行转换之外,我还能做些什么使这些类型起作用? 问题答案: 应该弃用恕我直言。您最好使用来明确说明转换的时间和地

  • 关于预合成和嵌套 如果要对合成中已存在的某些图层进行分组,可以预合成 这些图层。预合成图层会将这些图层放置在新合成中,这将替换原始合成中的图层。新的嵌套合成将成为原始合成中单个图层的源。新合成将显示在“项目”面板中并且可用于渲染或者在其他任何合成中使用。您可以通过将现有合成添加到其他合成中来嵌套合成,正如您将其他任何素材项目添加到合成中一样。预合成单个图层可用于向图层添加变换属性以及影响渲染合成元

  • 本文向大家介绍Python 语言嵌套集合,包括了Python 语言嵌套集合的使用技巧和注意事项,需要的朋友参考一下 示例 导致: 而是使用frozenset:            

  • 假设我有一个包含集合的对象,所述集合上的每个元素都包含一个集合,每个集合都包含一个集合。 我想在最深的对象上迭代,并对其应用相同的代码。 命令式的方法是微不足道的,但有没有一种方法来完成这一切? 我可以看到如何从最深的循环中生成lambda: 但我能做得更多吗?

  • 在这里,我得到了错误: “无效的术语聚合顺序路径[price>price>price.max]。术语桶只能在子聚合器路径上排序,该路径由路径中的零个或多个单桶聚合和路径末尾的最终单桶或度量聚合组成。子路径[price]指向非单桶聚合” 如果我按持续时间聚合排序,查询可以正常工作,如 那么,有什么方法可以通过嵌套字段上的嵌套聚合来排序聚合吗?

  • 下面是我用(FacetModels)填充我的收藏的内容 如何访问可用值[]数组 “FacetModels”:[{“FacetDisplayLabel”:null,“SelectedValues”:[],“AvailableValues”:[],“UnknownResults”:0,“ActionURI”:null,“FacetGroupName”:“Category”,“FacetGroupFri