List<Lahetys> last = session.createQuery("from lahetys order by lahetysNro DESC LIMIT 1").list();

y en el registro que tengo:

INFO: Hibernate: select  from order by  lahetysNro DESC LIMIT 1
WARN: SQL Error: 1064, SQLState: 42000
ERROR: You have an error in your SQL syntax; check the manual that corresponds to your       MySQL server version for the right syntax to use near 'from order by  lahetysNro DESC LIMIT 1' at line 1

Lo que ha ocurrido a «de LAHETYS»? ¿Cuál es la mejor práctica para manejar eso con HQL o/y con SQL?

Otro problema:

Lahetys last = (Lahetys)session.createSQLQuery("select * from lahetys order by lahetysNro DESC LIMIT 1").uniqueResult();
session.getTransaction().commit();  

y me sale una excepción:

Ljava.lang.Object; cannot be cast to Lahetys 

Así que no se puede convertir un objeto a mi Lahetys-objeto, raro?

Gracias!
Sami

OriginalEl autor Sami | 2012-10-25

2 Comentarios

  1. 24

    Su consulta HQL no es válido. El LÍMITE no es válido HQL cláusula. Para hacerlo en modo de Hibernación, acaba de hacer

    Query query = session.createQuery("from lahetys order by lahetysNro DESC");
    query.setMaxResults(1);
    Lahetys last = (Lahetys) query.uniqueResult();
    Gracias por contestar!Tengo el mismo excepción: —AsekorjausHelper.getLastLahetysNro()—- INFO: Hibernate: seleccione desde el pedido por lahetysNro DESC limit ? ADVERTENCIA: Error de SQL: 1064, SQLState: 42000 ERROR: Se ha producido un error en la sintaxis de SQL; consulte el manual que corresponde a la versión del servidor MySQL para la sintaxis para usar cerca «de orden por lahetysNro DESC limit 1» en la línea 1 INFO: EXCEPCIÓN PRODUCIDO—–>Usted tiene un error en la sintaxis de SQL; consulte el manual que corresponde a la versión del servidor MySQL para la sintaxis para usar cerca «de orden por lahetysNro DESC limit 1» en la línea 1
    Ver a @RAS respuesta. HQL usos entidades, campos asignados/propiedades y asociaciones. Nunca nombres de tabla y columna.

    OriginalEl autor JB Nizet

  2. 6

    Cuando usted está utilizando HQL, usted debe especificar el nombre de clase completamente calificado en lugar de tableName. De la misma manera usted debe especificar propertyName en lugar de columnName. También hay que tener en cuenta que ambos son sensibles a las mayúsculas.

    Mirando vuestras consultas & la excepción de que estás recibiendo, estoy asumiendo que lahetys es su nombre de la tabla & lahetysNro es su nombre de columna.

    Debe utilizar por ejemplo: Si su Lahetys clase está situado en la com carpeta:

    List<Lahetys> last = session.createQuery("from com.Lahetys order by lahetysNro DESC LIMIT 1").list();

    Para tu 2ª pregunta:

    Aquí se han utilizado SQL en lugar de HQL.
    Cuando se utiliza SQL con hibernate en tal manera, que siempre devuelve List<Object[]> & no List<Lahetys[]>.

    solución equivocada: org.hibernate.hql.interna.ast.QuerySyntaxException: testigo inesperado: límite cerca de la línea 1…. Uso .setMaxResults(1)
    Esta respuesta no es correcta. Ver a @demon101 del comentario.
    No estoy centrando en limit relacionados con las cosas por aquí. Eso es algo OP ha usado, y no estoy hablando de eso. Sólo estoy explicando las excepciones OP ha recibido y cómo debe arreglar. El uso de limit es totalmente diferente, así como el contexto aquí.
    Esta solución doenst trabajo, por favor, desmarcar esta como la mejor respuesta.

    OriginalEl autor RAS

Dejar respuesta

Please enter your comment!
Please enter your name here