繁体   English   中英

@OneToMany 中的 spring 数据 jpa 过滤器子项

[英]spring data jpa filter children in @OneToMany


我有一个EmployeeTest实体,它是父实体,而FunGroupInfo实体是子实体。 这两个实体都由 employeeId 映射 我需要一种方法来过滤出与搜索条件匹配的子实体,以便结果将仅包含父级和子级(满足要求)。

EmployeeTest 类:

@Entity(name = "EmployeeTbl")
public class EmployeeTest{
 @Id
 @Column(name = "emp_id")
 private String employeeId;

 @OneToMany(mappedBy= "employeeId", fetch =FetchType.Eager)
 private Set<FunGroupInfo> funGroupInfo;
}

FunGroupInfo 类:

@Entity(name = "FunGroupTbl")
public class FunGroupInfo{
 @Id
 @Column(name = "group_id")
 private String groupId;

 @Column(name = "emp_id")
 private String employeeId;

 @Column(name = "type_id")
 private String typeId;

 @Column(name = "active")
 private String activeFlag;

}

EmpRepository 接口:

@Repository
public interface EmpRepository extends JpaRepository<EmployeeTest, String>{
List<EmployeeTest> findByFunGroupInfoTypeId(String typeId)
}

//inside by test method

@Autowired 
private EmpRepository  empRepository;

List<EmployeeTest> empList = empRepository.findByFunGroupInfoTypeId("2");

上面的行返回我 List with FunGroupInfo 其中 typeId 在 1, 2, 3, 4, 5 但我需要获得唯一匹配的 FunGroupInfo 与 typeId 2 信息

我现在得到的结果我现在得到的结果但我实际上只需要突出显示的一个和父母一起

如果您使用的是Hibernate ,则可以使用注释@Where来过滤OneToMany关系中的元素。

例子:

  import org.hibernate.annotations.Where;
  ...
  @OneToMany(fetch = FetchType.EAGER, mappedBy = "employeeId", cascade = CascadeType.ALL)
  @Where(clause = "type_id = '2'")
  private Set<FunGroupInfo> funGroupInfo;
  ...

可在此处查阅更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM