ciao!
sto cercando di crearare una NamedQuery usando una JOIN.
nella classe Entity ho fatto cosi
codice:
@Entity
@Table(name = "GEN_ANAG")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "GenAnag.findByNpuJoinAnagConti", query = "SELECT g FROM GenAnag g INNER JOIN AnagConti a ON g.genAnagPK.npu = a.npu WHERE g.genAnagPK.npu = :npu")
.............
}
poi nella classe "Facade":
codice:
@Stateless
@Path("com.cimoda.rest.genanag")
public class GenAnagFacadeREST extends AbstractFacade<GenAnag> {
@PersistenceContext(unitName = "CimodaRestPU")
private EntityManager em;
public GenAnagFacadeREST() {
super(GenAnag.class);
}
@GET
@Path("{npu}")
@Produces({MediaType.APPLICATION_JSON})
@Override
public List<GenAnag> findByNpuJoinAnagConti(@PathParam("npu") Integer npu) {
return super.findByNpuJoinAnagConti(npu);
}
}
infine nell'AbstractFacade:
codice:
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
public AbstractFacade(Class<T> entityClass) {
this.entityClass = entityClass;
}
protected abstract EntityManager getEntityManager();
public List<T> findByNpuJoinAnagConti(Integer npu) {
return getEntityManager().createNamedQuery("GenAnag.findByNpuJoinAnagConti").setParameter("npu", npu).getResultList();
}
}
quando vado a fare il test, mi esce il record con i campi relativi alla prima tabella.
non prende in considerazione i campi della tabella in JOIN.
come se non la eseguisse.
dove sto sbagliando??