我有以下POJO's
过滤器---->过滤器组件
@Entity
public class Filter {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
//Setters and getters are not shown
我有以下子课程
@Entity
public class FilterComponents {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private int component_id;
private int component_type;
@ManyToOne
@JoinColumn(name = "filter_id")
private Filter filter;
//Setters and getters are not shown
我创建了一个存储库来查询过滤器
public interface FilterRepository extends JpaRepository <Filter, Long> {}
我正在调用findAll()
函数来获取所有过滤器。该功能运行良好;但是,它仅返回每个过滤器的名称和ID。
有没有办法返回相应的过滤器组件?我以为我可以编写联接查询,但是我感觉有一种更简洁的方法!
谢谢
答案 0 :(得分:0)
您可能缺少的是filterComponents
的{{1}}字段,例如
Filter
您可以根据需要在此处定义渴望或懒惰的抓取
答案 1 :(得分:0)
您的Filter
实体与FilterComponent
实体没有任何显式关联。在这种情况下,您将需要再次请求以选择具有给定过滤器ID的所有过滤器组件。
另一方面,您可以在Filter
实体中声明以下字段:
@OneToMany(mappedBy = "filter", fetch = FetchType.EAGER)
private List<FilterComponent> filterComponents;
并始终热切地加载过滤器组件。
如果急切加载不适合您,则可以对left join fetch
使用自定义查询:
select distinct f from Filter f left join fetch f.filterComponents c