with query example createsqlquery create addscalar java sql hibernate scalar

java - query - ¿Qué hace addScalar?



query addscalar (3)

Esto declara que desea que el resultado de la consulta devuelva objetos para columnas con nombre individuales, en lugar de entidades. Por ejemplo

createSQLQuery("SELECT COUNT(*) AS c FROM Users").addScalar("c").uniqueResult()

Regresará un solo Long . Si especifica múltiples escalares, el resultado volverá como una matriz de Object . Es similar a executeScalar excepto que funciona en columnas con nombre, y puede devolver un resultado compuesto.

El JavaDoc dice:

SQLQuery org.hibernate.SQLQuery.addScalar(String columnAlias, Type type) Declare a scalar query result

Sé lo que executeScalar está en C #, pero este escalar escalar y C # parece ser absolutamente diferente.


Para evitar la sobrecarga de usar ResultSetMetadata, o simplemente para ser más explícito en lo que se devuelve, se puede usar addScalar ():

session.createSQLQuery("SELECT * FROM CATS") .addScalar("ID", Hibernate.LONG) .addScalar("NAME", Hibernate.STRING) .addScalar("BIRTHDATE", Hibernate.DATE)

Esta consulta especificó:

the SQL query string the columns and types to return

Esto devolverá las matrices de objetos, pero ahora no usará ResultSetMetadata, sino que obtendrá explícitamente la columna ID, NAME y BIRTHDATE como Long, String y Short, respectivamente, del conjunto de resultados subyacente. Esto también significa que solo se devolverán estas tres columnas, aunque la consulta esté utilizando * y podría devolver más de las tres columnas enumeradas.

Es posible omitir la información de tipo para todos o algunos de los escalares.

session.createSQLQuery("SELECT * FROM CATS") .addScalar("ID", Hibernate.LONG) .addScalar("NAME") .addScalar("BIRTHDATE")

Esta es esencialmente la misma consulta que antes, pero ahora se usa ResultSetMetaData para determinar el tipo de NAME y BIRTHDATE, mientras que el tipo de ID se especifica explícitamente.

copiado de esto .


addScalar es una información de returnType para una clave dada en consulta SQL.

Ejemplo:

Query a = new SqlQuery("Select username as un from users where ..."); a.addScalar("un", String);

Si consulta los resultados, el resultado será Cadena u otros tipos si lo especifica.