cara acontece uma coisa que eu to sem saber o pq, ele da esse erro quando eu entro na pagina, mas cria normal as tabelas e os relacionamentos
INFO: table not found: produto_tipo
09/09/2011 15:07:31 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
GRAVE: Unsuccessful: alter table produto_tipo add constraint FKB73AB0BA32A4B9F foreign key (categoria) references produto_categoria
09/09/2011 15:07:31 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
GRAVE: ERRO: restrição de chave estrangeira "fkb73ab0ba32a4b9f" não pode ser implementada
Detalhe: Colunas chave "categoria" e "id" são de tipos incompatíveis: character varying e integer.
09/09/2011 15:07:31 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
e outra coisa, tem como eu mudar o nome da chave estrangeira de “fkb73ab0ba32a4b9f” para “produto_categoria_id_fkey”?
M
magnocosta
Uhmm,
Se vc estiver usando o Hibernate existe a Anotação abaixo q pode ser usada para renomear as constraints.
O problema é q vc perde a abstração que o JPA te proporciona e passa a ter uma dependendia do HIBERNATE !
Vc pode fazer isso gerar o banco e depois remove-la ( hehehe… )
M
magnocosta
Sobre o erro q esta acontecendo,
Verifique essa a classe que gera a tabela “produto_tipo”, parece q ela nã esta sendo gerada :
Se liga na mensagem de erro:
INFO:tablenotfound:produto_tipo
Verifique se a classe esta anotada com :
@Entity
e se ela esta no Hibernate.cfg.xml
Abraçoo !
P
pauloarlobo
Essa dependencia seria pouca, mas sua opniao usaria Hibernate pra isso ou mudava direto no banco? se for muitas tabelas ai num vira.
A respeito do erro, o que mais me intriga é que ele gera a tabela normal, olha a classe dela
packageentidade;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.JoinColumn;importjavax.persistence.ManyToOne;importjavax.persistence.Table;importorg.hibernate.annotations.ForeignKey;@Entity@Table(name="produto_tipo")publicclassProdutoTipo{@Id@GeneratedValueprivateintid;@Column(length=20)privateStringcategoria;@Column(length=50)privateStringdescricao;@ManyToOne@JoinColumn(name="categoria_id",nullable=false)@ForeignKey(name="produto_categoria_id_fkey")privateProdutoCategoriaprodutoCategoria;//gets e setspublicProdutoCategoriagetProdutoCategoria(){returnprodutoCategoria;}publicvoidsetProdutoCategoria(ProdutoCategoriaprodutoCategoria){this.produtoCategoria=produtoCategoria;}publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetCategoria(){returncategoria;}publicvoidsetCategoria(Stringcategoria){this.categoria=categoria;}publicStringgetDescricao(){returndescricao;}publicvoidsetDescricao(Stringdescricao){this.descricao=descricao;}}
uma pergunta bem amadora, onde que fica esse xml Hibernate.cfg.xml
M
magnocosta
Posta ae a sua classe ProdutoCategoria.
Na verdade se vc estiver usando JPA ( puro ), não existe o arquivo hibernate.cfg.xml e sim o persistence.xml
São equivalentes
=D
P
pauloarlobo
A classe produto_categoria
packageentidade;importjava.util.ArrayList;importjava.util.List;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.Lob;importjavax.persistence.OneToMany;importjavax.persistence.Table;@Entity@Table(name="produto_categoria")publicclassProdutoCategoria{@Id@GeneratedValueprivateintid;@Column(length=50)privateStringdescricao;@Lobprivatebyte[]foto;@OneToMany(mappedBy="categoria")privateList<ProdutoTipo>produtoTipos=newArrayList<ProdutoTipo>();//gets e sets*/publicbyte[]getFoto(){returnfoto;}publicList<ProdutoTipo>getProdutoTipos(){returnprodutoTipos;}publicvoidsetProdutoTipos(List<ProdutoTipo>produtoTipos){this.produtoTipos=produtoTipos;}publicvoidsetFoto(byte[]foto){this.foto=foto;}publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetDescricao(){returndescricao;}publicvoidsetDescricao(Stringdescricao){this.descricao=descricao;}}
M
magnocosta
uhmmm,
Se liga no mapeamento q vc fez no atributo “produtosTipos” :