Error  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Lita Mclean
JavaChild
[Avatar]

Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline

galera alguém saberia me explicar do que se trata realmente esse erro:

Exception in thread "main" org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [br.com.caelum.goodbuy.modelo.Produto#1]

obrigada desde já.
marcelo.bellissimo
Virtual Machine Man

Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline

Você está tentando pegar um registro com o Hibernate, passando algum valor pro ID desse objeto, mas ele não está achando... coloque mais informações, como o trecho onde ocorreu essa exceção...
xjunior
JavaEvangelist
[Avatar]

Membro desde: 26/08/2009 15:49:19
Mensagens: 321
Localização: Belo Horizonte - MG
Offline

Bonitinha...
kkk
Bom, como nosso amigo aí em cima disse, vc deve estar passando algo ou chamando um objeto que não existe ou foi instanciado, o mais provável seja passagem de parâmetro inexistente, ok?

acessem um dos melhores foruns de TI: http://www.clubedaprogramacao.com/forum/


Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
xjunior
JavaEvangelist
[Avatar]

Membro desde: 26/08/2009 15:49:19
Mensagens: 321
Localização: Belo Horizonte - MG
Offline

posta o código do erro e onde vc tá usando o hibernate pra gente dar uma olhada.

acessem um dos melhores foruns de TI: http://www.clubedaprogramacao.com/forum/


Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
Lita Mclean
JavaChild
[Avatar]

Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline

bom essa é a minha classe que estou tentado executar:

public class AlteracaoDeProduto {
public static void main(String[] args){
AnnotationConfiguration configuration= new AnnotationConfiguration();
configuration.configure();

SessionFactory factory= configuration.buildSessionFactory();
Session session= factory.openSession();

//carrega o produto do banco de dados
Produto produto=(Produto) session.load(Produto.class, 1L);

Transaction tx= session.beginTransaction();
produto.setPreco(42.50);
session.update(produto);
tx.commit();

}

e tenho a classe de produto:

@Id @GeneratedValue
private Long id;
private String nome;
private String Descricao;
private Double preco;
//getter e setters

ainda não consigo enxergar o erro
marcelo.bellissimo
Virtual Machine Man

Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline



Tenho certeza que não existe no seu banco de dados um registro com o id 1, conforme está sendo passado no parametro... crie um registro com id 1, ou passe outro valor aqui...
Lita Mclean
JavaChild
[Avatar]

Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline

ah ja ia esquecendo antes dessa classe de alteração eu fiz uma de add:
AnnotationConfiguration configuration= new AnnotationConfiguration();
configuration.configure();

SessionFactory factory= configuration.buildSessionFactory();
Session session= factory.openSession();


Produto produto= new Produto();
produto.setNome("Prateleira");
produto.setDescricao("Uma prateleira para colcoar livros");
produto.setPreco(35.90);

Transaction tx= session.beginTransaction();
session.save(produto);
tx.commit();

bom acho que o erro seria pq estou usando o id como auto_increment?
marcelo.bellissimo
Virtual Machine Man

Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline

Lita Mclean wrote:bom acho que o erro seria pq estou usando o id como auto_increment?


Não, isso é correto... o problema é que voce está sempre tentando recuperar o registro de ID 1 lá em cima...
Lita Mclean
JavaChild
[Avatar]

Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline

marcelo era isso mesmo....

mas não tem como envez de colocar.por exemplo: 1L
colocar para ele pegar por sequencia?ou algo do tipo...sem ter que ficar mexendo no codigo?
marcelo.bellissimo
Virtual Machine Man

Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline

Voce teria que fazer uma query diferente, usando Criteria ou HQL... não sei se voce está usando esse código como tutorial, se estiver recomendo que simplesmente adicione o registro com ID 1 no seu banco e continue com o tutorial... se não estiver, então dá uma estudada sobre esses dois métodos que falei, Criteria e HQL...

Com eles, voce consegue recuperar uma lista com todos os registros existentes, daí voce pode alterá-los um por um... usando o session.load() voce estará sempre buscando por um registro especifico, logo deve saber o ID dele antes...
Lita Mclean
JavaChild
[Avatar]

Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline

entendi Marcelo...e realmente estou estudando por um tutorial...
vou fazer como vc disse,vou continuar estudando por ele....e amis p/ frente eu aprendo de outras formas...

muito obrigada pela ajuda...

bjus
marcelo.bellissimo
Virtual Machine Man

Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline

É, eu percebi que era um tutorial, por isso nem entrei em muitos detalhes, senão você vai acabar se complicando mais ainda... provavelmente, mais pra frente nesse tutorial, devem ter alguns exemplos disso que estou falando... mas vá seguindo os passos com calma e entendendo cada passo, não avance sem ter compreendido o capitulo em que você está... e qualquer dúvida, grite aqui pra nós !
Lita Mclean
JavaChild
[Avatar]

Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline

pode deixar, com certeza rs ....valeuuuuuuu
gnahc74@gmail.com
Smalltalk

Membro desde: 18/12/2010 18:24:56
Mensagens: 1
Offline

no lugar do 1L você pode informar número do ID como 1, 2 ou 3...
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team