¿Cómo puedo utilizar CONCAT() y GROUP_CONCAT() en las consultas HQL?

OriginalEl autor mrcool | 2011-02-10

3 Comentarios

  1. 10

    Sobre concat: funciona exactamente de la misma manera como lo hace en MySQL (concatena cadenas, no es una función de agregado).

    Puede agregar group_concat como una función sql para su configuración. De esta manera se supone que el inferior DB sabe esta función, y te ata a su programa MySQL.

    import org.hibernate.cfg.Configuration; 
    import org.hibernate.dialect.function.StandardSQLFunction;
    import org.hibernate.type.StringType;
    
    //...
    myConf.addSqlFunction("group_concat", new StandardSQLFunction("group_concat", new StringType()));

    También indica que la salida de la función es una cadena. Sin esto, cuando group_concat campos numéricos Hibernate asumir el resultado también ser numérico y choque.

    +1 para mencionar que ate a mysql. group_concat no está disponible, por ejemplo, microsoft sql server. hibernate pretende ser sql proveedor independiente.

    OriginalEl autor vbence

  2. 1

    subclase del dialecto

    y

    registerFunction("group_concat", new StandardSQLFunction("group_concat", Hibernate.STRING));

    o uso SQLFunctionTemplate

    U puede explicar esto un poco más? ¿dónde tengo que escribir este registerFunction?

    OriginalEl autor zudokod

  3. 1

    Si usted está usando createSQLQuery, uso addScalar a la columna como Cadena.

    SQLQuery query = sessionObj.createSQLQuery("select group_concat(column1,column2) as mycolumn from some table group by someThing");
    query.addScalar("mycolumn ", Hibernate.STRING);
    Hibernate.STRING ha quedado obsoleta ya que de Hibernación de la versión 3.6.X Aquí está el desuso del documento, así que hay que utilizar StringType.INSTANCE.

    OriginalEl autor user1449197

Dejar respuesta

Please enter your comment!
Please enter your name here