Esta com erro.
Produto
erro em CascadeType.ALL
Fornecedor
erro em CascadeType.SAVE_UPDATE
Esta com erro.
Produto
erro em CascadeType.ALL
Fornecedor
erro em CascadeType.SAVE_UPDATE
Vc deve ter feito o import do arquivo errado…os imports do @FetchType, @Cascade, @CascadeType e @FetchMode vc usa os seguintes pacotes:
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
Daeh padcoe, bom dia!
vichh cara… Eu ja tinha adicionado todas esses pacotes, so que CascadeType não tem ;/
entao vc esta usando o jar errado ou esta faltando jar
http://www.hibernate.org/hib_docs/annotations/api/org/hibernate/annotations/CascadeType.html
vc tem o hibernate-annotations ai?
eu fiz da seguinte forma:
sumiu o erro e eu fui tentar adicionar novamente um produto com a FK e deu outro erro.
Pelo jeito está dizendo q não tem o fornecedor com id 6 neh? ou estou errado?
Mas o fornecedor com essa id tem sim =/
idfornecedor | cnpj | nome
--------------+----------+------
6 | 68468422 | XXX
eu resolvi o problema do import… era porque o javax.persistence.CascadeType estava na lista tbm, ai eu tirei ele e colokei o outro.
mas o erro continua.
vc sabe debugar?
coloca seu código entre um try / catch ( no catch vc coloca: } catch(BatchUpdateException ex) ) e na linha debaixo vc poe ex.printstacktrace();
coloca o breakpoint nessa linha ex.printstacktrace e depois da um clique duplo no ex e vai em “Watch…” ( supondo q vc use eclipse ) e navega até o getNextException() e cola ai o q ele ta lançando
Caramba cara, eu tive aula disso segunda feira e não estou lembrando como se faz…
AdicionarProduto
[code]public class AdicionaProduto {
public static void main(String[] args) {
Session session = new HibernateFactory().getSession();
Produto p = new Produto();
p.setNome ("Pen driver 1GB");
p.setDescricao("preto");
p.setPreco(17.99);
p.setFornecedores(new ArrayList());
p.getFornecedores().add(new Fornecedor());
p.getFornecedores().get(0).setIdfornecedor(6);
ProdutoDAO produtoDAO = new ProdutoDAO(session);
produtoDAO.salva(p);
//session.beginTransaction();
//session.save(p);
//session.getTransaction().commit();
System.out.println("ID do produto:" + p.getId());
session.close();
}
}[/code]
é nessa classe que tem que fazer, ne?
public class AdicionaProduto {
public static void main(String[] args) {
Session session = new HibernateFactory().getSession();
try {
Produto p = new Produto();
p.setNome ("Pen driver 1GB");
p.setDescricao("preto");
p.setPreco(17.99);
p.setFornecedores(new ArrayList());
p.getFornecedores().add(new Fornecedor());
p.getFornecedores().get(0).setIdfornecedor(6);
ProdutoDAO produtoDAO = new ProdutoDAO(session);
produtoDAO.salva(p);
//session.beginTransaction();
//session.save(p);
//session.getTransaction().commit();
System.out.println("ID do produto:" + p.getId());
session.close();
} catch (BatchUpdateException ex) {
ex.printstacktrace();
}
}
}
Coloca o breakpoint no ex.printsatcktrace
O que é esse breakpoint? :roll:
olha o erro que está dando:
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at br.com.caelum.hibernate.dao.ProdutoDAO.salva(ProdutoDAO.java:23)
at br.com.caelum.hibernate.AdicionaProduto.main(AdicionaProduto.java:29)
Caused by: java.sql.BatchUpdateException: Batch entry 0 update Fornecedor set cnpj=0, nome=NULL, banana_fornecedor=NULL where idfornecedor=6 was aborted. Call getNextException to see the cause.
at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2530)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1317)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2592)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
... 9 more
já tentou passar algum valor diferente de 0 para o cnpj?
Daeh padcoe, blz amigo? apareceu neh =P
David é vc que me adicionou la?
Então amigo, eu adicionei fornecedor com valor do cnpj diferente de 0. Olha aí
idfornecedor | cnpj | nome
--------------+----------+------
6 | 68468422 | XXX
debuga seu objeto e verifica o valor que está em CNPJ…ve se vc nao ta tentando salvar ele com ‘0’
Daeh padcoe, boa tarde maninho!! blz?
Cara, eu nao sei debugar o objeto. sou moh iniciante ainda… afff
Uma coisa q eu estava reparando é que no erro mostra um erro ao tentar fazer update no fornecedor, sendo que eu estou tentando adicionar um produto, por isso aparece aquele negocio de cnpj e cnpj nao tem nd vê com produto. Não tem algo errado ai não? :roll: :roll:
olha ai o erro!
abraço!!