Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Me ayudais en este codigo?

Estas en el tema de Me ayudais en este codigo? en el foro de Java en Foros del Web. Hola a todos, llevo horas revisando este codigo y no termino de ver en que estoy fallando, sera una tonteria pero estoy empezando y me ...
  #1 (permalink)  
Antiguo 26/01/2016, 09:54
 
Fecha de Ingreso: diciembre-2009
Mensajes: 31
Antigüedad: 14 años, 4 meses
Puntos: 0
Pregunta Me ayudais en este codigo?

Hola a todos, llevo horas revisando este codigo y no termino de ver en que estoy fallando, sera una tonteria pero estoy empezando y me cuesta ver los errores.
Estoy trabajando con hibernate haciendo un CRUD para una base de datos, me funciona todo bien insertar, eliminar, actualizar, listar todos los datos... pero me falla a la hora de hacer un filtrado, me refiero:
Tengo dos tablas: categorias y subcategorias. lo que yo necesito es que solo me muestre las subcategorias corespondientes a una categoria dada.
El codigo que inserte es el siguiente:

En la implementacion:
Código Java:
Ver original
  1. public List<Subcategorias> filterSubcategoriasByCategoria(Integer idCateg) {
  2.         try{
  3.             sf.getCurrentSession().beginTransaction();
  4.             Query q=sf.getCurrentSession().createQuery("from Subcategorias where idCategoria:=buscar");
  5.             q.setParameter("buscar", idCateg);
  6.             return q.list();
  7.         } catch (RuntimeException e){
  8.             System.out.println("error al listar "+e.getMessage());
  9.             sf.getCurrentSession().getTransaction().rollback();
  10.         }
  11.         return null;
  12.     }
Y en el test para probarlo hice un menu y esta seria la opcion para ejecutar el listado:
Código Java:
Ver original
  1. case 5: //FILTRA                   
  2.                     for (Subcategorias s:sd.filterSubcategoriasByCategoria(7))
  3.                         System.out.println(s);
  4.                     break;

¿Veis donde puedo estar fallando?
  #2 (permalink)  
Antiguo 26/01/2016, 10:09
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Me ayudais en este codigo?

Buenas,

Cuando dices que falla a que te refieres? Se produce una excepcion? No devuelve los resultados que esperas?


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 26/01/2016, 15:20
 
Fecha de Ingreso: diciembre-2009
Mensajes: 31
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Me ayudais en este codigo?

me da varios errores y termina la ejecucion, estos son los errores que me da:
Código Java:
Ver original
  1. ene 26, 2016 10:17:41 PM org.hibernate.hql.internal.QueryTranslatorFactoryInitiator initiateService
  2. INFO: HHH000397: Using ASTQueryTranslatorFactory
  3. ene 26, 2016 10:17:42 PM org.hibernate.hql.internal.ast.ErrorCounter reportError
  4. ERROR: line 1:32: unexpected token: idCategoria
  5. ene 26, 2016 10:17:42 PM org.hibernate.hql.internal.ast.ErrorCounter reportError
  6. ERROR: line 1:32: unexpected token: idCategoria
  7. line 1:32: unexpected token: idCategoria
  8.     at org.hibernate.hql.internal.antlr.HqlBaseParser.primaryExpression(HqlBaseParser.java:998)
  9.     at org.hibernate.hql.internal.antlr.HqlBaseParser.atom(HqlBaseParser.java:3530)
  10.     at org.hibernate.hql.internal.antlr.HqlBaseParser.unaryExpression(HqlBaseParser.java:3383)
  11.     at org.hibernate.hql.internal.antlr.HqlBaseParser.multiplyExpression(HqlBaseParser.java:3255)
  12.     at org.hibernate.hql.internal.antlr.HqlBaseParser.additiveExpression(HqlBaseParser.java:2912)
  13.     at org.hibernate.hql.internal.antlr.HqlBaseParser.concatenation(HqlBaseParser.java:597)
  14.     at org.hibernate.hql.internal.antlr.HqlBaseParser.relationalExpression(HqlBaseParser.java:2679)
  15.     at org.hibernate.hql.internal.antlr.HqlBaseParser.equalityExpression(HqlBaseParser.java:2540)
  16.     at org.hibernate.hql.internal.antlr.HqlBaseParser.negatedExpression(HqlBaseParser.java:2504)
  17.     at org.hibernate.hql.internal.antlr.HqlBaseParser.logicalAndExpression(HqlBaseParser.java:2420)
  18.     at org.hibernate.hql.internal.antlr.HqlBaseParser.logicalOrExpression(HqlBaseParser.java:2385)
  19.     at org.hibernate.hql.internal.antlr.HqlBaseParser.expression(HqlBaseParser.java:2098)
  20.     at org.hibernate.hql.internal.antlr.HqlBaseParser.logicalExpression(HqlBaseParser.java:1876)
  21.     at org.hibernate.hql.internal.antlr.HqlBaseParser.whereClause(HqlBaseParser.java:481)
  22.     at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:736)
  23.     at org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:323)
  24.     at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:186)
  25.     at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:279)
  26.     at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
  27.     at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
  28.     at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
  29.     at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76)
  30.     at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
  31.     at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302)
  32.     at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240)
  33.     at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1894)
  34.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  35.     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  36.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  37.     at java.lang.reflect.Method.invoke(Unknown Source)
  38.     at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:338)
  39.     at com.sun.proxy.$Proxy22.createQuery(Unknown Source)
  40.     at daoImp.SubcategoriasDAOImp.filterSubcategoriasByCategoria(SubcategoriasDAOImp.java:88)
  41.     at tests.testSubcategorias.menu(testSubcategorias.java:58)
  42.     at tests.testSubcategorias.main(testSubcategorias.java:67)
  43.  
  44. error al listar unexpected token: idCategoria near line 1, column 32 [from pojos.Subcategorias where idCategoria:=buscar]
  45. Exception in thread "main" java.lang.NullPointerException
  46.     at tests.testSubcategorias.menu(testSubcategorias.java:58)
  47.     at tests.testSubcategorias.main(testSubcategorias.java:67)
  #4 (permalink)  
Antiguo 26/01/2016, 18:53
inazense
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Me ayudais en este codigo?

Acabo de empezar con hibernate, así que no estoy muy seguro, pero yo diría que el fallo se encuentra aquí

Código Java:
Ver original
  1. Query q=sf.getCurrentSession().createQuery("from Subcategorias where idCategoria:=buscar");

Cuando haces
where idCategoria:=buscar

Debería ser idCategoria=:buscar

Prueba a ver si es eso y comentas. Saludos
  #5 (permalink)  
Antiguo 27/01/2016, 02:25
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Me ayudais en este codigo?

Buenas,

Ademas de lo comentado por inacense, en HQL para poder referirte a la table necesitas ademas usar un alias. Por ejemplo:

Código Java:
Ver original
  1. Query q=sf.getCurrentSession().createQuery("from Subcategorias sub where sub.idCategoria=:buscar");
Un saludo
__________________
If to err is human, then programmers are the most human of us
  #6 (permalink)  
Antiguo 27/01/2016, 03:33
 
Fecha de Ingreso: diciembre-2009
Mensajes: 31
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Me ayudais en este codigo?


Madre mia un millón de gracias era el maldito =: mira que mire y remire por horas y no me fije en esa bobada.
Gracias a los dos, un saludo

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:56.