SQL - problema con query

   
Vista:

problema con query

Publicado por Pabloico (3 intervenciones) el 14/07/2010 13:47:29
Buenas, tengo una duda bastante grande.

No entiendo por qué esta consulta me falla en un proyecto java con eclipse, el caso es que no me reconoce la palabra ON y me gustaría saber si la consulta esta mal implantada o si hay otra manera de ponerla. Al probarla directamente sobre la bbdd va fenomenal, pero al proyecto no le gusta. Muchas gracias

query="SELECT persona.id, persona.nombre, persona.apellidos, persona.telfijo, persona.telmovil, cargo.nombre, organismo.nombre, rol.nombre, persona.email " +
"FROM AdmOrganismoEJB organismo " +
"INNER JOIN PlnPlanrolcargoorganismoEJB pln " +
"ON organismo.id = pln.idAdmorganismo " +
"INNER JOIN AdmCargoEJB cargo " +
"ON cargo.id = pln.idAdmcargo " +
"INNER JOIN PlnRolEJB rol " +
"ON rol.id = pln.idRol " +
"LEFT JOIN AdmCargoorganismopersonaEJB caorga " +
"ON caorga.idCargo = cargo.id " +
"LEFT JOIN AdmPersonaEJB persona " +
"ON persona.id = caorga.idPersona " +
"WHERE pln.idPlan = :idPlan " +
"AND pln.idRol = :idRol " +
"ORDER BY persona.apellidos ASC"

Nuevamente, muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con query

Publicado por Leonardo Josue (877 intervenciones) el 14/07/2010 18:36:26
Buenos días Pabloico:

Sinceramente no encuentro nada raro en la consulta, qué error es el que te marca??? error de sintaxis??? Sólo se me ocurre que recuperes el valor de tu variable "query" después de armar la consulta para verificar que no se esté cortando o pegando algun texto con otro. Por cierrto, te hago una recomendación, y es que cuanto vayas a concatenar cadenas utilices la clase StringBuilder en lugar del operador + es mucho más eficiente y el texto queda más "limpio"

Ahora bien, dependiendo del manejador de BD que estés utilizando puedes cambiar la sintaxis del INNER JOIN y LEFT JOIN para hacer las uniones explícitas en la sección del WHERE, en ORACLE sería más o menos así:

SELECT persona.id, persona.nombre, persona.apellidos, persona.telfijo, persona.telmovil, cargo.nombre, organismo.nombre, rol.nombre, persona.email FROM
AdmOrganismoEJB organismo,
PlnPlanrolcargoorganismoEJB pln,
AdmCargoEJB cargo,
PlnRolEJB rol,
AdmCargoorganismopersonaEJB caorga,
AdmPersonaEJB persona
WHERE
organismo.id = pln.idAdmorganismo and
cargo.id = pln.idAdmcargo and
rol.id = pln.idRol and
caorga.idCargo = cargo.id(+) and
persona.id = caorga.idPersona(+) and
pln.idPlan = :idPlan and
pln.idRol = :idRol
ORDER BY persona.apellidos ASC

Saludos y espero que te pueda servir de algo.
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con query

Publicado por Pabloico (3 intervenciones) el 15/07/2010 10:07:16
Buenos días

Muchas gracias por tu respuesta, aunque la verdad es que tambien me falla la consulta, el eclipse me dice esto en la consola y no sé que puede ser.

Muchas gracias, un saludo

State: FAILED
Reason: javax.persistence.PersistenceException: org.hibernate.HibernateException: Errors in named queries: listadoResponsablesIncidencias
I Depend On:
jboss.jca:service=DataSourceBinding,name=OracleDS
Depends On Me:
jboss.j2ee:jar=sgpcBusiness.ejb3,name=AdministracionEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=MotorReglasEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=ArquitecturaEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=RecursosEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=PersonalizacionEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=UsuariosEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=Comunicacion112EJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=CartografiaEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=VulnerabilidadesEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=ServicioGisEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=DocumentacionEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=ProcedimientoOperativoEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=MonitorizacionEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=PanelControlEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=EmergenciasCerradasEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=LogicaTramitacionEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=AdministracionTramitacionEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=SeguimientoEconomicoEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=AgrupacionesVoluntariosEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=RolesEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=PlanesYProcedimientosEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=AdministracionWebEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=SeleccionarDocumentoUTEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=TramitacionEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=RepositorioEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=UnidadTramitacionEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=RiesgosEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=InformesEstadisticasEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=AdministracionGeneracionDinamicaEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=MantenimientoCargoOrganismoPersonaEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=GeneracionDinamicaEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=MensajeriaEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=IncendiosEJB,service=EJB3
jboss.j2ee:jar=sgpcBusiness.ejb3,name=VisibilidadEJB,service=EJB3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con query

Publicado por Leonardo Josue (877 intervenciones) el 15/07/2010 16:23:00
Hola de nuevo Pabloico: Mira, no tengo mucha experiencia con Java, pero por lo que puedo ver en en error el problema no es la consulta sql, sino algo más... haz la prueba con una consulta más sencilla:

Select count(*) from persona

Para ver si te está arrojando resultados. De cualquier manera si encuentro algo de ayuda en la red te a hago saber.

Saludos.
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con query

Publicado por Pabloico (3 intervenciones) el 16/07/2010 08:13:45
Te lo agradezco Leonardo

Ya he probado a hacer una query mas sencilla y funciona perfectamente, he probado a hacer querys complejas y también. La unica diferencia es que esta consulta trae inner joins y parece que ese es el problema.

Intentaré sacar los datos de otro modo.

Muchas gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar