Necesito una lista con tres columnas. la columna 1 y el 3 de tener valores, mientras que la 2ª como null.
Puedo hacerlo a través de la consulta HQL?

Necesito algo como esto:

select id, null, name from MyClass

Donde Miclase así como de la tabla subyacente sólo tiene dos propiedades/columnas es decir, «id» y «name»

OriginalEl autor WSK | 2010-07-30

4 Comentarios

  1. 14

    Otra opción que parece que funciona (probado en DB2, MySQL, Oracle y SQL Server):

    select id, cast(null as char), name from ...

    Usted puede crear una subclase de la Hibernación dialecto y abstracto con una función personalizada:

    registerFunction("always_null", 
      new SQLFunctionTemplate(Hibernate.STRING, "cast(null as char)"));

    y, a continuación, utilizar esto en su HQL:

    select id, always_null(), name from ...
    Muy interesante! Usted sigue recibiendo un «real» null con cast(null as char) o recibe un 'null'?
    Sí, es una real nulo.
    Genial! En la ausencia de solución genérica en modo de hibernación, que guarda nuestra piel. Bueno la cosa es que, no vamos a tener que jugar con objetos Java

    OriginalEl autor Brian Deterling

  2. 4

    Puede utilizar nullif() de función para generar null.

    Acepta dos argumentos. Si los argumentos son iguales, vamos a regresar null valor.

    Me salvaste, muchas gracias. En mi humilde opinión esta es la solución más limpia. El uso de NULLIF(1,1) funciona bien 🙂

    OriginalEl autor sohrab yousefi

  3. 1

    AFAIK, su consulta no devuelve el resultado esperado, devolverá sólo las columnas antes de la null (id en su caso). Sin embargo, el siguiente trabajo

    select id as first, '', name from MyClass

    No sé si esto es un bug o simplemente no admite la función (el HQL ayuda: posible «select NULL como …»? hilo sobre la Hibernación de los foros parece sugerir que es un fallo).

    No estoy seguro de entender por qué se necesita este (podría un select new expresión ser una alternativa?) pero me temo que tendrás que utilizar SQL nativo aquí.

    «seleccione el nuevo Objeto(id, null, nombre) de Miclase» no funciona tan bien
    Sí, yo sé, pero eso no es a lo que me refería. Me refiero con new Foo(id, name) y el establecimiento de un tercer atributo null en el constructor.
    ah, me olvidaba su punto en el primer intento, ahora lo tengo. En situaciones donde nulo es realmente crítico, se puede conseguir que en su camino, pero su frecuencia de uso desorden clases de entidad. Por CIERTO, para mi el caso de que tu primera sugerencia trabajó como un encanto.

    OriginalEl autor Pascal Thivent

  4. 1

    También puede intentar TO_CHAR(null). Funciona muy bien para HQL – Oracle en el constructor new Foo(id, nombre, attr3) donde attr3 – Cadena de valor

    OriginalEl autor Viktoriia Lymareva

Dejar respuesta

Please enter your comment!
Please enter your name here