Sé cómo recuperar varias columnas o filas o ambos utilizando el método de Hibernación de abajo. Sin embargo no estoy seguro de cómo recuperar una única fila o columna y asignarlo a una variable de Cadena. Cualquier ayuda en esto? Gracias

    Session session = getSessionFactory().beginSession();
    Transaction transaction = null;

    StringBuilder sql = new StringBuilder();

    sql.append("SELECT DISTINCT B.COLUMN_NAME ");
    sql.append("FROM ALL_CONSTRAINTS A, ALL_CONS_COLUMNS B, ARCTBL C ");
    sql.append("WHERE A.TABLE_NAME = :TABLE_NAME AND A.CONSTRAINT_TYPE = 'P' "); 
    sql.append("AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME ");
    sql.append("AND C.TABLENAME=A.TABLE_NAME AND A.TABLE_NAME=B.TABLE_NAME ");

    try{

    **listOfValues = session.createSQLQuery(sql.toString()).setParameter("TABLE_NAME", table).list();**
    //Change this to code below
String returnObjByHibernate = session.createSQLQuery(//Hibernate method)
    transaction.commit;
    }
    catch (Exception e){
    //Logic here
InformationsquelleAutor dimas | 2014-06-17

2 Comentarios

  1. 3

    Para obtener una sola fila debe utilizar uniqueResult() en lugar de la lista()

    http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/Query.html#uniqueResult()

    Devuelve una Cadena o una matriz de Cadenas (no recuerdo) de manera que su línea debe ser:

    strValue = session.createSQLQuery(sql.toString()).setParameter("TABLE_NAME", table).uniqueResult();

    A cambiar a uniqueResult()[0] o uniqueResult().get(0) si el objeto devuelto es un «conjunto» o un «conjunto»…

    • gracias eddie voy a tratar de esto en mi final 🙂
  2. 1

    Uso uniqueResult() que devuelve el objeto. Y si hay varias filas coincide con el sql de la consulta, a continuación, lanza NonUniqueResultException.

    No hay ninguna opción para uniqueResult()[0] o uniqueResult().get(0).

    Si la consulta devuelve varios de consulta se pueden utilizar list()

    Si usted no está seguro de cuántas filas devueltas por la consulta, pero quieren un único valor de uno de ellos. Uso list().get(0) o list()[0]

    ver aquí

    • Gracias anirban 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here