These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: @OneToMany weird issue, probably newbie mistake?
PostPosted: Sun Jun 01, 2008 1:13 pm 
Newbie

Joined: Fri Sep 02, 2005 2:55 pm
Posts: 3
Hibernate version: 3.2.6

Mapping documents:


Hello, i have this hibernate code:

Code:
public List<Cliente> findAll() {
      List<Cliente> lista;
      Session session = HibernateUtil.getCurrentSession();
      try {
         session.beginTransaction();
         Criteria crit = session.createCriteria(Cliente.class);
         lista = crit.list();
         session.getTransaction().commit();
         return lista;
      } catch (HibernateException e) {
         e.printStackTrace();
         throw e;
      } finally {
         if (session.isOpen())
            session.close();
      }
   }




and also have this test:

Code:
HibClienteRepository repo = new HibClienteRepository();
      
      Cliente c = new Cliente();
      repo.makePersistent(c);
      
      Cliente c2 = repo.findAll().get(0);
      Matafuego m1 = new Matafuego("1");
      Matafuego m2 = new Matafuego("2");
      Matafuego m3 = new Matafuego("3");
      Matafuego m4 = new Matafuego("4");
      
      c2.addMatafuego(m1);
      c2.addMatafuego(m2);
      c2.addMatafuego(m3);
      c2.addMatafuego(m4);
      
      repo.makePersistent(c2);
      
      assertEquals(1, repo.findAll().size());


For some reason i can figure out, the assertEquals fails saying that there are 4 elements on the collection instead of 1 !!!!

Obviously the 4 elements are associatted with the 4 Matafuego instances asociated with the Cliente. What is the problem here? The logs of this test show this:

Code:
Hibernate: insert into cliente (activo, celular, documento, domicilio, email, fax, localidad, nombre, responsabilidad, saldo, telefono, tipo_doc, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: select this_.id as id0_6_, this_.activo as activo0_6_, this_.celular as celular0_6_, this_.documento as documento0_6_, this_.domicilio as domicilio0_6_, this_.email as email0_6_, this_.fax as fax0_6_, this_.localidad as localidad0_6_, this_.nombre as nombre0_6_, this_.responsabilidad as respons10_0_6_, this_.saldo as saldo0_6_, this_.telefono as telefono0_6_, this_.tipo_doc as tipo13_0_6_, matafuegos2_.cliente_id as cliente11_8_, matafuegos2_.id as id8_, matafuegos2_.id as id8_0_, matafuegos2_.anoFabricacion as anoFabri2_8_0_, matafuegos2_.capacidad as capacidad8_0_, matafuegos2_.cliente_id as cliente11_8_0_, matafuegos2_.direccion as direccion8_0_, matafuegos2_.idInterna as idInterna8_0_, matafuegos2_.marca as marca8_0_, matafuegos2_.nombre as nombre8_0_, matafuegos2_.nroAparato as nroAparato8_0_, matafuegos2_.tipoMatafuego as tipoMata9_8_0_, matafuegos2_.ubicacion as ubicacion8_0_, transaccio3_.cliente_id as cliente2_9_, transaccio3_.id as id9_, transaccio3_.id as id1_1_, transaccio3_.cliente_id as cliente2_1_1_, transaccio3_1_.cheque_FK as cheque6_2_1_, transaccio3_1_.fecha as fecha2_1_, transaccio3_1_.monto as monto2_1_, transaccio3_1_.notas as notas2_1_, transaccio3_1_.nroRecibo as nroRecibo2_1_, transaccio3_2_.factura_FK as factura5_3_1_, transaccio3_2_.fecha as fecha3_1_, transaccio3_2_.montoEnCC as montoEnCC3_1_, transaccio3_2_.tieneChequeAsociado as tieneChe3_3_1_, case when transaccio3_1_.id is not null then 1 when transaccio3_2_.id is not null then 2 when transaccio3_.id is not null then 0 else -1 end as clazz_1_, cheque4_.id as id15_2_, cheque4_.CUIT as CUIT15_2_, cheque4_.aLaOrdenDe as aLaOrdenDe15_2_, cheque4_.banco as banco15_2_, cheque4_.descripcion as descripc5_15_2_, cheque4_.entregadoPor as entregad6_15_2_, cheque4_.estado as estado15_2_, cheque4_.fecha as fecha15_2_, cheque4_.fechaDeCobro as fechaDeC9_15_2_, cheque4_.monto as monto15_2_, cheque4_.numeroCheque as numeroC11_15_2_, facturainm5_.id as id4_3_, facturainm5_.cliente_id as cliente7_4_3_, facturainm5_.consumidorFinal as consumid2_4_3_, facturainm5_.fecha as fecha4_3_, facturainm5_.monto as monto4_3_, facturainm5_.numero as numero4_3_, facturainm5_.tipoFactura as tipoFact6_4_3_, cliente6_.id as id0_4_, cliente6_.activo as activo0_4_, cliente6_.celular as celular0_4_, cliente6_.documento as documento0_4_, cliente6_.domicilio as domicilio0_4_, cliente6_.email as email0_4_, cliente6_.fax as fax0_4_, cliente6_.localidad as localidad0_4_, cliente6_.nombre as nombre0_4_, cliente6_.responsabilidad as respons10_0_4_, cliente6_.saldo as saldo0_4_, cliente6_.telefono as telefono0_4_, cliente6_.tipo_doc as tipo13_0_4_, pagos7_.venta_a_cliente_id as venta1_10_, pagodeclie8_.id as pagos2_10_, pagodeclie8_.id as id1_5_, pagodeclie8_1_.cliente_id as cliente2_1_5_, pagodeclie8_.cheque_FK as cheque6_2_5_, pagodeclie8_.fecha as fecha2_5_, pagodeclie8_.monto as monto2_5_, pagodeclie8_.notas as notas2_5_, pagodeclie8_.nroRecibo as nroRecibo2_5_ from cliente this_ left outer join matafuego matafuegos2_ on this_.id=matafuegos2_.cliente_id left outer join transaccion_con_cliente transaccio3_ on this_.id=transaccio3_.cliente_id left outer join pago_de_cliente transaccio3_1_ on transaccio3_.id=transaccio3_1_.id left outer join venta_a_cliente transaccio3_2_ on transaccio3_.id=transaccio3_2_.id left outer join cheque cheque4_ on transaccio3_1_.cheque_FK=cheque4_.id left outer join factura facturainm5_ on transaccio3_2_.factura_FK=facturainm5_.id left outer join cliente cliente6_ on facturainm5_.cliente_id=cliente6_.id left outer join venta_a_cliente_pago_de_cliente pagos7_ on transaccio3_.id=pagos7_.venta_a_cliente_id left outer join pago_de_cliente pagodeclie8_ on pagos7_.pagos_id=pagodeclie8_.id left outer join transaccion_con_cliente pagodeclie8_1_ on pagodeclie8_.id=pagodeclie8_1_.id where this_.nombre like ?
Hibernate: insert into matafuego (anoFabricacion, capacidad, cliente_id, direccion, idInterna, marca, nombre, nroAparato, tipoMatafuego, ubicacion, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into matafuego (anoFabricacion, capacidad, cliente_id, direccion, idInterna, marca, nombre, nroAparato, tipoMatafuego, ubicacion, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into matafuego (anoFabricacion, capacidad, cliente_id, direccion, idInterna, marca, nombre, nroAparato, tipoMatafuego, ubicacion, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into matafuego (anoFabricacion, capacidad, cliente_id, direccion, idInterna, marca, nombre, nroAparato, tipoMatafuego, ubicacion, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: update cliente set activo=?, celular=?, documento=?, domicilio=?, email=?, fax=?, localidad=?, nombre=?, responsabilidad=?, saldo=?, telefono=?, tipo_doc=? where id=?
Hibernate: select this_.id as id0_6_, this_.activo as activo0_6_, this_.celular as celular0_6_, this_.documento as documento0_6_, this_.domicilio as domicilio0_6_, this_.email as email0_6_, this_.fax as fax0_6_, this_.localidad as localidad0_6_, this_.nombre as nombre0_6_, this_.responsabilidad as respons10_0_6_, this_.saldo as saldo0_6_, this_.telefono as telefono0_6_, this_.tipo_doc as tipo13_0_6_, matafuegos2_.cliente_id as cliente11_8_, matafuegos2_.id as id8_, matafuegos2_.id as id8_0_, matafuegos2_.anoFabricacion as anoFabri2_8_0_, matafuegos2_.capacidad as capacidad8_0_, matafuegos2_.cliente_id as cliente11_8_0_, matafuegos2_.direccion as direccion8_0_, matafuegos2_.idInterna as idInterna8_0_, matafuegos2_.marca as marca8_0_, matafuegos2_.nombre as nombre8_0_, matafuegos2_.nroAparato as nroAparato8_0_, matafuegos2_.tipoMatafuego as tipoMata9_8_0_, matafuegos2_.ubicacion as ubicacion8_0_, transaccio3_.cliente_id as cliente2_9_, transaccio3_.id as id9_, transaccio3_.id as id1_1_, transaccio3_.cliente_id as cliente2_1_1_, transaccio3_1_.cheque_FK as cheque6_2_1_, transaccio3_1_.fecha as fecha2_1_, transaccio3_1_.monto as monto2_1_, transaccio3_1_.notas as notas2_1_, transaccio3_1_.nroRecibo as nroRecibo2_1_, transaccio3_2_.factura_FK as factura5_3_1_, transaccio3_2_.fecha as fecha3_1_, transaccio3_2_.montoEnCC as montoEnCC3_1_, transaccio3_2_.tieneChequeAsociado as tieneChe3_3_1_, case when transaccio3_1_.id is not null then 1 when transaccio3_2_.id is not null then 2 when transaccio3_.id is not null then 0 else -1 end as clazz_1_, cheque4_.id as id15_2_, cheque4_.CUIT as CUIT15_2_, cheque4_.aLaOrdenDe as aLaOrdenDe15_2_, cheque4_.banco as banco15_2_, cheque4_.descripcion as descripc5_15_2_, cheque4_.entregadoPor as entregad6_15_2_, cheque4_.estado as estado15_2_, cheque4_.fecha as fecha15_2_, cheque4_.fechaDeCobro as fechaDeC9_15_2_, cheque4_.monto as monto15_2_, cheque4_.numeroCheque as numeroC11_15_2_, facturainm5_.id as id4_3_, facturainm5_.cliente_id as cliente7_4_3_, facturainm5_.consumidorFinal as consumid2_4_3_, facturainm5_.fecha as fecha4_3_, facturainm5_.monto as monto4_3_, facturainm5_.numero as numero4_3_, facturainm5_.tipoFactura as tipoFact6_4_3_, cliente6_.id as id0_4_, cliente6_.activo as activo0_4_, cliente6_.celular as celular0_4_, cliente6_.documento as documento0_4_, cliente6_.domicilio as domicilio0_4_, cliente6_.email as email0_4_, cliente6_.fax as fax0_4_, cliente6_.localidad as localidad0_4_, cliente6_.nombre as nombre0_4_, cliente6_.responsabilidad as respons10_0_4_, cliente6_.saldo as saldo0_4_, cliente6_.telefono as telefono0_4_, cliente6_.tipo_doc as tipo13_0_4_, pagos7_.venta_a_cliente_id as venta1_10_, pagodeclie8_.id as pagos2_10_, pagodeclie8_.id as id1_5_, pagodeclie8_1_.cliente_id as cliente2_1_5_, pagodeclie8_.cheque_FK as cheque6_2_5_, pagodeclie8_.fecha as fecha2_5_, pagodeclie8_.monto as monto2_5_, pagodeclie8_.notas as notas2_5_, pagodeclie8_.nroRecibo as nroRecibo2_5_ from cliente this_ left outer join matafuego matafuegos2_ on this_.id=matafuegos2_.cliente_id left outer join transaccion_con_cliente transaccio3_ on this_.id=transaccio3_.cliente_id left outer join pago_de_cliente transaccio3_1_ on transaccio3_.id=transaccio3_1_.id left outer join venta_a_cliente transaccio3_2_ on transaccio3_.id=transaccio3_2_.id left outer join cheque cheque4_ on transaccio3_1_.cheque_FK=cheque4_.id left outer join factura facturainm5_ on transaccio3_2_.factura_FK=facturainm5_.id left outer join cliente cliente6_ on facturainm5_.cliente_id=cliente6_.id left outer join venta_a_cliente_pago_de_cliente pagos7_ on transaccio3_.id=pagos7_.venta_a_cliente_id left outer join pago_de_cliente pagodeclie8_ on pagos7_.pagos_id=pagodeclie8_.id left outer join transaccion_con_cliente pagodeclie8_1_ on pagodeclie8_.id=pagodeclie8_1_.id


I am guessing i have some problem with my mapping, but can figure out what it is. My mapping on Cliente is like this:

Code:
@OneToMany(fetch=FetchType.EAGER, mappedBy = "cliente", cascade = {CascadeType.ALL})
   private Set<Matafuego> matafuegos = new HashSet<Matafuego>();


and the mapping on Matafuego is like this:
Code:
@ManyToOne(cascade=CascadeType.ALL, targetEntity=Cliente.class)
   private Cliente cliente;


Thanks very much for your help!!


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.