休眠获取父子延迟加载与额外的检查



我有两个表CompanyEmployees,一对多映射。公司表包含复合主键。

我想根据主 ID 从公司表中搜索,但想对子表进行额外的检查。

我只想加载我将在请求中获得的特定类型的员工。如何与findById("id")SprongbootJPA一起完成;

class Company{
@Id
private String companyId;
@Id
private String stateId;
private String company Name;
@OneToMany(targetEntity = Employees.class, fetch = FetchType.LAZY, cascade = {
CascadeType.ALL }, mappedBy = "company")
private Set<Employees> empList;
}
class Employees{
@Id
private String id;
//foreign key
private String companyId;
//foreign key
private String stateId;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "companyId", referencedColumnName = "companyId", insertable = false, updatable = false, nullable = true),
@JoinColumn(name = "stateId", referencedColumnName = "stateId", insertable = false, updatable = false, nullable = true) })
private Company company;
private int salary;
private String type;
}

使用过滤器,这是可以设置动态值的@Where的替代方法。

这是示例

@FilterDef(
name = "employeeTypeFilter",
parameters = @ParamDef(name = "type", type = "string")
)
@Filter(
name = "employeeTypeFilter",
condition = "type > : type"
)
public class Employees {
}

您可以根据需要动态启用或禁用代码中的筛选器。

你可以将@Where用于固定类型

@Where(clause = "type = 'anyEmployeeType'")
private Set<Employees> empList;

对于动态获取,您可以在员工存储库中查询

List<Employees> findByTypeAndCompany(String type, Company company);

最新更新