| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/07/2009 08:26:02
|
Grinvon
GUJ Master
![[Avatar]](/images/avatar/aff0a6a4521232970b2c1cf539ad0a19.png)
Membro desde: 18/08/2003 22:10:49
Mensagens: 1899
Localização: Em qualquer lugar
Offline
|
Pesquisando na internet, esse erro ocorre em duas situações diferentes:
1 - Quando você tentar fazer uma operação de escrita em um registro da qual o hibernate não se tem mais a instãncia.
2 - Quando dois ou mais acessos (threads) implicam na alteração de um mesmo registro.
O Erro gerado é um StaleStateException:
Erro hibernate wrote:
Caused by: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
No exemplo que usei que provocou o erro, foi mapeado uma entidade JPA de nome Funcionalidade, ela tem um auto-mapeamento permitindo ser exibida em uma camada view da forma hierárquica (a exemplo de uma treeview), ou seja, uma funcionalidade pode apontar para outra, uma se torna pai de várias funcionalidades filhas.
Vejam a entidade Funcionalidade.java:
Na parte relacionada ao @ManyToOne de Funcionalidade pai eu fiz dessas duas formas diferentes:
Exemplo 1 wrote:
@ManyToOne
@JoinColumn(name = "FNC_FNC_ID", referencedColumnName="FNC_ID")
Funcionalidade pai;
Exemplo 2 wrote:
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, targetEntity = Funcionalidade.class)
@JoinColumn(name = "FNC_FNC_ID")
Funcionalidade pai;
Mas tanto mapeando de uma forma, como de outra, o erro ocorre.
O erro ocorre quando tento atualizar uma funcinalidade existente atribuíndo a ela uma outra funcionalidade (ou seja, ela se tornará filha de outra). Se eu tentar alterar qualquer outro atributo (menos o do relacionamento) ela persiste com sucesso no banco. O código testado é o seguinte:
Como eu disse, se tentar alterar qualquer outro atributo, o registro é atualizado com sucesso, porém no caso de tentar associar um pai, ele simplesmente não vai.
This message was edited 1 time. Last update was at 17/07/2009 08:27:28
|
>> Inocêncio. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/07/2009 18:25:03
|
Grinvon
GUJ Master
![[Avatar]](/images/avatar/aff0a6a4521232970b2c1cf539ad0a19.png)
Membro desde: 18/08/2003 22:10:49
Mensagens: 1899
Localização: Em qualquer lugar
Offline
|
Só para alertar quem possa estar tendo o mesmo problema.
No meu caso o erro foi gerado por causa de uma trigger que efetuava dois selects antes de um insert, nesse caso como o select trazia nada, o hibernate achava que não foi persistido nada.
|
>> Inocêncio. |
|
|
 |
|
|
|
|