Cascata no Hibernate

3 respostas
V

oi, como vcs tão?

alguém já usou alteração e inserção em cascata no hibernate? :oops:
To apanhando tanto com isso…

meu mapeamento tá assim:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>
    <class name="proj.User" table="users">
        <id name="login" column="login">
			<generator class="assigned"/>
		</id>
		<property name="name"  column="name"/>
        <property name="password"  column="password"/>
		<bag name="userTests" inverse="true" lazy="false" cascade="all">
			<key column="login"/>
			<one-to-many class="proj.UserTest"/>
        </bag>
    </class>

</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>
    <class name="proj.UserTest" table="user_test">
        <id name="user_test" column="user_test">
			<generator class="assigned"/>
		</id>
        <many-to-one name="user" column="login" class="proj.User"/>
        <property name="result"  column="result"/>
		<property name="dt_test"  column="dt_test"/>
    </class>
</hibernate-mapping>

mas qdo eu chamo um session.save(user) ou session.update(user)
ele não salva na base o userTest.

Já tentei usar as opções de unsaved-value com null, none, mas nao tah
adiantanto.

o que está acontecendo? to meio perdida aki…

brigada

3 Respostas

TedLoprao

Chegaste a acompanhar o log para ver o q o mesmo está fazendo?
Por acaso ele não faz update ao invés de insert?

Se for isso, o hibernate não tem como saber se o seu objeto já está no banco ou não, por isso opta pelo update. Para poder utilizar o cascade nessa sua estrutura vc teria que usar um esquema de interceptor ou, se não me engano, version ou timestamp…

Fallow

C

Configura o log4j e lança um DEBUG. Vê o que está rolando, qq coisa posta o log aqui, fica beeeem mais fácil saber o que está acontecendo, pq pode ser n coisas… :wink:

Keep coding

V

oi,

Tá acontecendo isso mesmo… o log ficou assim:

2004-08-17 15:02:55,750 - INFO STDOUT - Hibernate: insert into users (login, name, password) values (?, ?, ?)
2004-08-17 15:02:55,781 - INFO STDOUT - Hibernate: update user_test set login=?, result=?, dt_test=
? where user_test=?

vou tentar o Interceptor. achei uma classe chamada Persistent no site
do hibernate.

brigada pela ajuda :slight_smile:

Criado 17 de agosto de 2004
Ultima resposta 17 de ago. de 2004
Respostas 3
Participantes 3