java.lang.ClassNotFoundException - jpql查询问题,无法检索对象

时间:2016-06-30 20:40:29

标签: java hibernate jpa

抱歉打扰你。我是jpa和hibernate的新手,所以我对typequery有一些问题。我有一个函数,它返回一个字符串,一个“Departamento”的名字,并重新找到与它有关联的“Departamento”的对象(“Carrera”)。在sqldeveloper我没有问题,但在typedquery中它已经变得有点麻烦。我确信我的查询的sintax是错误的,我不知道如何解决。如果有人可以帮助我,我会很高兴。

ClientePrueba.java

package com.cliente;

import java.util.List;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.entities.Carrera;
import com.entities.Departamento;
import com.entities.Materia;
import com.exception.ServiciosException;
import com.servicios.CarrerasBeanRemote;
import com.servicios.DepartamentosBeanRemote;
import com.servicios.MateriasBeanRemote;


public class ClientePrueba {

    public static void main(String[] args) throws NamingException{
        DepartamentosBeanRemote departamentosBean = (DepartamentosBeanRemote) InitialContext.doLookup("EjemploEJB/DepartamentosBean!com.servicios.DepartamentosBeanRemote");
        MateriasBeanRemote materiasBean = (MateriasBeanRemote) InitialContext.doLookup("EjemploEJB/MateriasBean!com.servicios.MateriasBeanRemote");
        CarrerasBeanRemote carrerasBean = (CarrerasBeanRemote) InitialContext.doLookup("EjemploEJB/CarrerasBean!com.servicios.CarrerasBeanRemote");

        System.out.println("Obtengo todas las carreras del departamento MATEMATICAS");
        List<Carrera> carreras = carrerasBean.obtenerPorDepartamento("MATEMATICAS");
        for (Carrera car : carreras){
            System.out.println(car.getNombre());
        }

    }
}

CarrerasBean.java

package com.servicios;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceException;
import javax.persistence.TypedQuery;

import com.entities.Carrera;
import com.entities.Departamento;
import com.entities.Materia;
import com.exception.ServiciosException;

/**
 * Session Bean implementation class CarrerasBean
 */
@Stateless
public class CarrerasBean implements CarrerasBeanRemote {
    @PersistenceContext
    private EntityManager em;

    /**
     * Default constructor. 
     */
    public CarrerasBean() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public List<Carrera> obtenerPorDepartamento(String departamento) {
                TypedQuery<Carrera> query = em.createQuery("SELECT c FROM Carrera c WHERE c.departamento.nombre = :depto", Carrera.class).setParameter("depto", departamento);

        return query.getResultList();
    }

}

Carrera.java

package com.entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.*;

/**
 * Entity implementation class for Entity: Carrera
 *
 */
@Entity

public class Carrera implements Serializable {


    private static final long serialVersionUID = 1L;
    @Id
    //@GeneratedValue(strategy=GenerationType.AUTO)
    @SequenceGenerator(name="Carrera", sequenceName="SEQ_ID_CARRERA", allocationSize= 1)
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="Carrera")
    private Long id;
    @Column(length=40)
    private String nombre;

    @ManyToOne(optional=false)
    private Departamento departamento;

    @OneToMany
    private List<Materia> materias = new ArrayList<>();

    public Carrera() {
        super();
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Departamento getDepartamento() {
        return departamento;
    }

    public void setDepartamento(Departamento departamento) {
        this.departamento = departamento;
    }

    public List<Materia> getMaterias() {
        return materias;
    }

    public void setMaterias(List<Materia> materias) {
        this.materias = materias;
    }

}

Departamento.java

package com.entities;

import java.io.Serializable;

import javax.persistence.*;

/**
 * Entity implementation class for Entity: Departamento
 *
 */
@Entity

public class Departamento implements Serializable {


    private static final long serialVersionUID = 1L;
    @Id
    //@GeneratedValue(strategy=GenerationType.AUTO)
    @SequenceGenerator(name="Departamento", sequenceName="SEQ_ID_DEPARTAMENTO", allocationSize= 1)
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="Departamento")
    private Long id;
    @Column(length=40)
    private String nombre;

    public Departamento() {
        super();
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }



}

0 个答案:

没有答案