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.  [ 4 posts ] 
Author Message
 Post subject: Attribute cascade doesnt work for me
PostPosted: Fri Oct 24, 2008 7:11 am 
Beginner
Beginner

Joined: Tue Aug 26, 2008 4:24 pm
Posts: 29
I have to classes with two file mappings:

First mapping:

<hibernate-mapping>
<class name="User" table="user">
<id name="idUser" column="idUser">
<generator class="assigned"></generator>
</id>
<property name="name" column="nombre"/>
<many-to-one name="place" class="ParkingPlace" column="placeId" cascade="save-update" >
</many-to-one>
</class>
</hibernate-mapping>

Second mapping:

<hibernate-mapping>
<class name="ParkingPlace" table="parkinguser">
<id name="idPlace" column="idPlace">
<generator class="assigned"></generator>
</id>
<property name="colour" column="colourPlace"/>
</class>
</hibernate-mapping>


Java Code:
//get session and transaction
User newUser=new User();
newUser.setIdUser(12);
newUser.setName("Juana");

ParkingPlace newPlace=new ParkingPlace();
newPlace.setIdPlace(80);
newPlace.setColour("blanco");

newUser.setPlace(newPlace);

sesion.save(newUser);
transaccion.commit();

1. If I execute the before code ,Hibernate tries to execute the insert of a user before to insert a parkingplace and I get org.hibernate.exception.ConstraintViolationException, why?


Top
 Profile  
 
 Post subject:
PostPosted: Fri Oct 24, 2008 7:04 pm 
Expert
Expert

Joined: Mon Nov 26, 2007 2:29 pm
Posts: 443
El programa intenta grabar un lugar de estacionamiento antes que un usuario, porque eso es exactament lo que el "cascade" le está indicando que haga.

Sin embargo, la estructura de tablas probablemente funciona en sentido opuesto, es decir, se necesita primero un lugar, y luego uno o más usuarios que se refieran a él.

Nota que, según la secuencia de tu código cliente, ¡la propagación en cascada no hace falta! Ya te estás encargando tú de proveer la integridad.

Prueba quitarla del archivo de mapeo, y me cuentas.

_________________
Gonzalo Díaz


Top
 Profile  
 
 Post subject: Insertar una foreign key a traves del atributo cascade
PostPosted: Mon Oct 27, 2008 10:37 am 
Beginner
Beginner

Joined: Tue Aug 26, 2008 4:24 pm
Posts: 29
Pero tenia entendido que Hibernate ejecuta las sentencias no en el orden que tu pongas las sentencias sino que las optimiza.

1. ¿Si el atributo cascade suele usarse con propiedades que son foreign key, entonces nunca podra grabarse antes la foreign key que el registro que la referencia en una tabla?

2. ¿Como puedo hacer que con el atributo cascade la aplicacion me funcione y me inserte antes un plaza de parking que un usuario o siempre?

Gracias


Top
 Profile  
 
 Post subject: Re: Insertar una foreign key a traves del atributo cascade
PostPosted: Mon Oct 27, 2008 1:56 pm 
Expert
Expert

Joined: Mon Nov 26, 2007 2:29 pm
Posts: 443
gogofe wrote:
2. ¿Como puedo hacer que con el atributo cascade la aplicacion me funcione y me inserte antes un plaza de parking que un usuario o siempre?


No me entiendes. El atributo cascade que pusiste está "funcionando" como es debido, es decir, mal. En el caso de uso que muestras, no debería haber ningún cascade configurado.

Lo que dices acerca del orden en que Hibernate ejecuta sus comandos es cierto, pero irrelevante para este tema. Si no me crees, ejecuta "flush()" luego de cada operación, (lo cual debería forzar un orden de ejecución), pero verás que el problema persiste.

_________________
Gonzalo Díaz


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

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.