I have three SQL tables
- The "Accedant" table that has an idAccedant
- The "Emetteur" table that has an idEmetteur and a foreign key towards the Accedant table
- The "Asso_Etab_Emet" table which is an assocation table between a table called "Etablissement" and the "Emetteur" table. So the "Asso_Etab_Emet" table has two foreign keys, one towards the Etablissement table and one toward the Emetteur table
I want to build a
Specification<Etablissement>
with the idAccedant as input data, to get, at the end, the list of all the Etablissement linked to an Emetteur :
Page<Etablissement> etablissementsPage = etablissementDao.findAll(specEtab, configPage);
My code that aims at building the Specification is the following
@Override
public Specification<Etablissement> findActifByExploitantSpec(Long idAccedant) {
return ((root, query, builder) -> {
Subquery<Emetteur> emetteurSubquery = query.subquery(Emetteur.class);
Root<Emetteur> emetteurRoot = emetteurSubquery.from(Emetteur.class);
emetteurSubquery
= emetteurSubquery.where(builder.equal(emetteurRoot.get(Emetteur_.accedant).get(Accedant_.id), idAccedant));
Subquery<Etablissement> etablissementSubquery = query.subquery(Etablissement.class);
Root<Etablissement> etablissementRoot = etablissementSubquery.from(Etablissement.class);
Root<EtablissementEmetteur> etablissementEmetteurRoot = etablissementSubquery.from(EtablissementEmetteur.class);
etablissementSubquery
= etablissementSubquery.select(etablissementEmetteurRoot.get(EtablissementEmetteur_.etablissement));
etablissementSubquery = etablissementSubquery.where(
builder.in(etablissementEmetteurRoot.get(EtablissementEmetteur_.emetteur)).value(emetteurSubquery));
return builder.in(root).value(etablissementSubquery);
});
}
I have a "No explicit selection and an implicit one could not be determined" error when testing via my Angular webapp