Проблема, создав query используя hibernate

Я реализую следующую консультацию:

    @Override
    public List<Estudiante> buscarEstudiantes() {   
        Session session = getSession();
        Query query = session.createSQLQuery("from Estudiante");        
        return query.list();
    }

И возврати следующую ошибку:

Бывший HTTP 500 - Request processing failed; nested exception is org.hibernate.exception. SQLGrammarException: could not extract ResultSet

Единственный способ, что функционирует консультация,, - если я использую имена колонн таблицы, но если я стараюсь использовать имена свойств класса, дает мне ошибку.

Консультация, что, если оно функционирует:

    @Override
    public List<Estudiante> buscarEstudiantesSinCurso() {
        Session session = getSession();
        Query query = session.createSQLQuery("SELECT E.Est_Primer_Nombre FROM Estudiante E");
        return query.list();
    }

Класс студент:

@Entity
@Table(name="estudiante") 
public class Estudiante {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "est_id")
    private int id;

    @Column(name = "est_rut")
    private String rut;

    @NotNull
    @Size(min=3, max=50)
    @Column(name = "est_primer_nombre", nullable = false)
    private String primerNombre;

    @Size(min=3, max=50)
    @Column(name = "est_segundo_nombre", nullable = true)
    private String segundoNombre;

    @NotNull
    @Size(min=3, max=50)
    @Column(name = "est_primer_apellido", nullable = false)
    private String primerApellido;

    @NotNull
    @Size(min=3, max=50)
    @Column(name = "est_segundo_apellido", nullable = false)
    private String segundoApellido;


    @NotNull
    @DateTimeFormat(pattern="dd/MM/yyyy") 
    @Column(name = "est_fecha_nacimiento", nullable = false)
    @Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
    private LocalDate fechaNacimiento;

    @ManyToMany(fetch = FetchType.LAZY, mappedBy = "estudiantes")
    private Set<Curso> cursos = new HashSet<Curso>(0);

    // aquí, getters y setters
}

Я нашел несколько вопросов, похожих на мою, но никакое решение я не функционировало.

Поскольку я могу делать, чтобы использовать имя свойств класса, и не будьте должен размещать имя колонны.

Я использую hibernate 4.3.6.

1
задан 01.04.2016, 20:51
2 ответа

Ты используешь один createSQLQuery поэтому он посылает тебе ошибку, так как поверил родной SQL.

Пробует:

    Session session = getSession();
    Query query = session.createQuery("from Estudiante");        
    return query.list();

в Вашем месте, чтобы создавать query с HQL


, Давайте Говорить, что createSQLQuery - для консультаций родных SQL а именно

Select * From Tabla

И createQuery - для Ибернате Кери Lenguage (HQL) а именно

From Tabla
1
ответ дан 24.11.2019, 14:39
  • 1
    Другой opci и # 243; n он состоит в том, чтобы использовать API Критериев (Criteria API), который является м и # 225; s ориентируемый на Java DSL, чтобы вооружать queries. –  01.04.2016, 20:05

В единственной линии, используя createCriteria:

public List<Estudiante> list() {
    return getSession().createCriteria(Estudiante.class).list();
}
2
ответ дан 24.11.2019, 14:39