Problema com Entity Bean

11 respostas
B

Prezados,

Estou com a seguinte stacktrace:
javax.ejb.DuplicateKeyException: Entity with primary key br.com.gcm.ejb.cmp.SessionsKey@1b87f403 already exists

Dando uma “googlada” vi que:
DuplicateKeyException : Esta exceção é lançada quando não pode- se criar um objeto, pois a sua chave já existe e está sendo utilizada por outro objeto. Normalmente é utilizada no método create() do EJB Entity Bean.

A dúvida é: Tem como destruir esse objeto ? ou só esperando pelo garbage collector da jvm ?

ps: estou usando jboss 4.2.2

11 Respostas

Andre_Fonseca

você pode remover o registro da tabela? se puder isso resolve o seu problema…

B

Vou dar uma verificada, mas n vi onde ele está pondo o código pra guardar na tabela

B

Bem, ao reiniciar a máq (jvm tb rsrs), o objeto sai da memória e posso acessar novamente…

aí qdo tento pela 2x ocorre essa exception.

jgbt

Cara,
cada instancia de um Entiry representa um linha no banco de dados. Vc pode ter 2 linhas com a mesma PK no banco?
Entao vc não pode ter 2 entitys com o mesmo ID/PK.
De uma lida sobre EJB’s, principalmente sobre Entity Beans.

[]´s

B

Pessoal,

Li e reli… sobre os entity, configurei baseado na doc do jboss e o erro persiste. Eu teria que fazer alguma configuração no proprio Jboss ou é programação erronea no ejb ?

Andre_Fonseca

balax:
Pessoal,

Li e reli… sobre os entity, configurei baseado na doc do jboss e o erro persiste. Eu teria que fazer alguma configuração no proprio Jboss ou é programação erronea no ejb ?

Então, é o que o jgbt falou, se antes de criar o Entity você já tiver o registro na tabela que possui a mesma primary key irá acontecer a excessão javax.ejb.DuplicateKeyException

para resolver isso você tem duas alternativas:

[list]usa findByPrimaryKey para pegar o objeto sem precisar fazer o create - lembre-se que quando eu faço explicitamente create eu faço o insert de um registro na tabela do banco de dados[/list]
[list]remove o registro da tabela do banco de dados[/list]

não acho que precise configura nada no JBoss…

[]´s

B

Perguntei a respeito de configuraçao do servidor, pq o código funciona no websphere, mas aí qdo é jboss ocorre esse problema…

vou dar uma verificada nesse findpk

B

Pessoal o jboss já vem configurado com o DefaultDS e eu configurei o meu datasource tb. Qdo inicio o ejb ele executa o insert na tabela, mas não aparece a linha correspondente no banco que eu quero.

Existe a possibilidade de ele estar gravando essa session no hypersonic ou algo temporario ou estou viajando ?

Esses cmp´s estao me deixando maluco… rsrs

B

Fiz esse negocio do findpk antes do create, o problema é q se não encontra nada me lança uma exception direto.

O jboss trabalha com cache de ejb correto ? teria algum problema com relaçao a isso ?

Andre_Fonseca

balax:
Fiz esse negocio do findpk antes do create, o problema é q se não encontra nada me lança uma exception direto.

O jboss trabalha com cache de ejb correto ? teria algum problema com relaçao a isso ?

Oi balax,

Então, conceitualmente é aquilo que eu falei, agora já com relação as configurações do JBoss eu não posso ajudar, mas a questão do cache pode fazer sentido…

[]´s

B

O estranho é o seguinte. eu acesso a aplicação corretamente, procuro uma entidade para alterar, na hora de dar ok. o jboss informa “no such entity”. (mas eu n escolhi a entidade antes? como não acha?)

Não tira os objetos da memória. mto estranho isso.

Criado 26 de março de 2008
Ultima resposta 31 de mar. de 2008
Respostas 11
Participantes 3