String query = "select distinct im\n" +
" from gwf_ThreatImplMethodLink imLink\n" +
" join imLink.implMethods im\n" +
" where imLink.source in :sources\n" +
" and imLink.targets in :targets";
使用 StringBuilder:
StringBuilder queryBuilder = new StringBuilder();
queryBuilder.append("select distinct im\n");
queryBuilder.append(" from gwf_ThreatImplMethodLink imLink\n");
queryBuilder.append(" join imLink.implMethods im\n");
queryBuilder.append(" where imLink.source in :sources\n");
queryBuilder.append(" and imLink.targets in :targets");
String query = queryBuilder.toString();
@Component(ThreatImplMethodRepository.NAME)
public class ThreatImplMethodRepository extends DefaultRepository {
public static final String NAME = "gwf_ThreatImplMethodRepository";
@Override
protected Class entityClass() {
return ThreatImplMethod.class;
}
public List getBySourcesAndTargets(List sources, List targets, FetchPlan fetchPlan) {
return load().query("""
select distinct im
from gwf_ThreatImplMethodLink imLink
join imLink.implMethods im
where imLink.source in :sources
and imLink.targets in :targets
""")
.parameter("sources", sources)
.parameter("targets", targets)
.fetchPlan(fetchPlan)
.list();
}
}