2012-05-12 17 views
13

Estoy trabajando en Hibernate en eclipse. Estoy ejecutando una consulta simple 'De'. Aquí está el códigoLa consulta Hibernate da el mismo registro varias veces

List list = sess1.createQuery("From Myview").list(); 
    System.out.println("Records Found :"+list.size()); 

    Iterator<Myview> i = list.iterator(); 

    while(i.hasNext()) 
    { 
     Myview nS = i.next(); 
     System.out.println(nS.getFirstName()+" -- "+nS.getLastName()+" -- "+nS.getAddressLine1()); 
    } 

El problema es la list.size() devuelve 11, que está justo ya que tengo 11 registros en mi mesa. Pero cuando estoy en el ciclo while, los mismos registros se muestran varias veces y el ciclo termina después de la undécima iteración. aquí está mi salida

enter image description here

aquí es lo que quiero

enter image description here

ahora se puede ver que en mi salida, ficha aparece 11 veces, pero el mismo registro se repite una y otra vez . Y lo que necesito es la salida que se muestra en la imagen posterior.

favor me ayude en este sentido, ya que soy nuevo en hibernación

Respuesta

18

Esto ocurre cuando el elemento id en su archivo hbm no es un PK en su tabla DB. Hibernate trata todas las filas con la misma ID que el mismo objeto.

Cambie su elemento id para que apunte a una columna PK o use el elemento composite-id en caso de que su tabla solo tenga una clave primaria compuesta.

0

¿Estas seguro que la mesa se llena correctamente? intento:

List list = sess1.createQuery("SELECT * FROM Myview").list(); 

futhermore, que está recibiendo esta lista desde un punto de vista? ¿Estás seguro de haber hecho esta vista correctamente?

+3

Esto es SQL, no HQL. –

0

Debe usar la palabra clave distinta para filtrar el mismo resultado.

1

Su entidad Myview tienen que implementar la interfaz java.io.Serializable

0

Si tiene asociación en el mapeo a continuación, comprobar si fetch=FetchType.EAGER. Si es así, utiliza otro tipo de búsqueda o fetchMode.

0

Coloque los objetos devueltos por Hibernate en un LinkedHashSet y devuelva el LinkedHashSet.

Cuestiones relacionadas