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 ?
você pode remover o registro da tabela? se puder isso resolve o seu problema…
B
balax
Vou dar uma verificada, mas n vi onde ele está pondo o código pra guardar na tabela
B
balax
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
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 ?
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
balax
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
balax
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
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 ?
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
balax
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.