问题描述
考虑下面的实体(删除了 Getter 和 Setter 以减少代码)-
public class Organization {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn
private List<Account> accounts;
}
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn
private List<Contact> contacts;
}
public class Contact {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn
private List<Certification> certifications;
}
public class Certification {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn
private List<Skill> skills;
}
public class Skill {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
我正在使用 spring boot JPA 规范来提取所有拥有技能认证的组织,比如 Java
public static Specification<Organization> getPartner() {
return (root,cq,cb) -> {
Join<Organization,Skill> skillJoin = root.join("accounts").join("contacts")
.join("certifications").join("skills");
return cb.equal(skillJoin.get("name"),"java");
}
}
以上代码需要8-9s才能返回结果。可能是由于多个 @OneToMany 加入。 请提出任何性能改进建议:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)