subconsultas parametros inner fechas entre ejemplos diferencia datos consultas consultar consulta con hibernate grails hql grails-controller

hibernate - parametros - ¿Cómo hacer una declaración Union SQL en HQL?



hql java (3)

Intento crear una Unión entre dos tablas, usando HQL (Hibernate Query Language). Este script SQL funciona bien en mi servidor SQL:

SELECT COUNT(DISTINCT linkedin_id) as test, school_name FROM (SELECT * FROM alum_education UNION SELECT * FROM alum_connection_educations) AS UNIONS where school_name=''some string''

el problema es cuando trato de ejecutarlo en griales como este:

def countOfEdu = AlumEducation.executeQuery("select count (distinct linkedinId ) as countOfEdu, schoolName as SchoolName from (SELECT * FROM alumEducation UNION SELECT * FROM alumConnectionEducations) AS UNIONS where schoolName=''some string''" )

me sale este error:

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ( near line 1, column 83 [select count(distinct linkedinId ) as countOfEdu, schoolName as SchoolName from (SELECT * FROM alumEducation UNION SELECT * FROM alumConnectionEducations) AS UNIONS where schoolName=''Duquesne University'']

¿Cómo puedo ejecutar la declaración SQL anterior en griales?

gracias jason


En su caso, el problema real es que las subconsultas no son compatibles con la cláusula FROM en EJBQL.


Me gustaría compartir una forma que he encontrado para evitar esta situación. La única regla aquí es tener el mismo tipo, en este caso una Cadena, que corresponde al tipo de la lista de resultados, puede agregar tantas tablas como desee:

public List<String> findByCPForCNPJ(String query){ TypedQuery<String> ccpf = manager.createQuery("select cpf from PessoaFisica where cpf like :pCpf", String.class); ccpf.setParameter("pCpf", "%" + query + "%"); List<String> lista1 = ccpf.getResultList(); TypedQuery<String> ccnpj = manager.createQuery("select cnpj from PessoaJuridica where cnpj like :pCnpj", String.class); ccnpj.setParameter("pCnpj", "%" + query + "%"); lista1.addAll(ccnpj.getResultList()); return lista1; }

Usé un método en JAVA para esta solución. Espero haber contribuido un poco, buena suerte a todos ...


Los sindicatos no son compatibles con HQL. Hay un problema en la JIRA de Hibernate que está abierto desde 2005.