[hibernate-users] Out of order cascade persist

Loreno Oliveira lorenooliveira at gmail.com
Mon Apr 19 15:04:32 EDT 2010


Hi there,

I'm facing a weird behavior of hibernate.

Trying to illustrate: I have three entities, say A, B, and C. In my scheme,
A has one B which has one C, which has a reference to the parent A.

This is my code:

@Entity
@Table(name = "ASSOCIADOS")
public class Associado implements Serializable {

@OneToOne( cascade=CascadeType.ALL )
 @JoinColumn( name="idFiliacao" )
private Filiacao filiacao;

}


@Entity
@Table(name = "FILIACOES")
public class Filiacao implements Serializable {

@OneToOne( cascade=CascadeType.ALL )
 @JoinColumn(name="idDependentePai" )
private Dependente pai;

}

@Entity
@Table(name = "DEPENDENTES")
public class Dependente implements Serializable {

@ManyToOne
 @JoinColumn( name="idAssociado" )
private Associado titular;

}

My problem is that when I try to persist a fully configured Associado (with
a Filiation that has a Dependente which, in turn, has a reference to the
parent Associado) the inserts generated by Hibernate seem to be out of
order. I mean, first Hibernate tries to insert the Dependente entity, which
has a reference to the primary key of Associado. But, at this point,
Associado was not inserted yet. So, I'm getting this error:

Caused by: java.sql.BatchUpdateException: Column 'idAssociado' cannot be
null

And this is the SQL generated by hibernate:

insert into DEPENDENTES (nome, nascimento, idParentesco, idAssociado,
beneficiarioPeculio, dependentePlanoSaude, id) values ('Nome Qualquer', '',
3, '', 'false', 'false', 6900)

Right after the em.persist (I'm using Hibernate JPA) I stop the thread in
the debugger and I can see that All the objects got an ID assigned. However,
during the commit I'm getting this error.

Does anyone have any hint about this?

Thanks in advance!

Loreno
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/hibernate-users/attachments/20100419/f45c9d49/attachment-0001.html 


More information about the hibernate-users mailing list