ciao!
sto cercando di crearare una NamedQuery usando una JOIN.
nella classe Entity ho fatto cosi
poi nella classe "Facade":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") ............. }
infine nell'AbstractFacade: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); } }
quando vado a fare il test, mi esce il record con i campi relativi alla prima tabella.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(); } }
non prende in considerazione i campi della tabella in JOIN.
come se non la eseguisse.
dove sto sbagliando??

Rispondi quotando