Olá galera to tentando fazer uma aplicaçãozinha funcionar aqui com hibernate, dai toda vez q executo a tela q chama os devidos metodos diz a seguinte mensagem:
Exception in thread “main” org.hibernate.MappingException: Repeated column in mapping for entity: br.com.negocio.Disciplina column: cpf (should be mapped with insert=“false” update=“false”)
darksteel3000, favor postar o mapeamento da entidade Disciplina. Mas em um primeiro momento acredito que a coluna cpf está duplicada.
darksteel3000
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagebr.com.negocio;importjavax.persistence.*;importjava.io.Serializable;/** * * @author Júnior */@Entity@Table(name="disciplina")publicclassDisciplinaimplementsSerializable{@Id@ColumnprivateStringcpf;@Column(name="codigo_disciplina")privateStringcodigo;@Column(name="nome_disciplina")privateStringnome;@Column(name="carga_horaria")privateStringcargaHoraria;@ManyToOne(fetch=FetchType.EAGER)@JoinColumn(name="cpf")// Este comando serve para dizer a qual coluna no banco estara atada o "CPF"privateProfessorprofessor;@ManyToOne(fetch=FetchType.EAGER)@JoinColumn(name="cpf")// Este comando serve para dizer a qual coluna no banco estara atada o "CPF"privateAlunoaluno;publicDisciplina(Stringcodigo,Stringnome,StringcargaHoraria){this.codigo=codigo;this.nome=nome;this.cargaHoraria=cargaHoraria;}publicDisciplina(Stringcpf,Stringcodigo,Stringnome,StringcargaHoraria){this.cpf=cpf;this.codigo=codigo;this.nome=nome;this.cargaHoraria=cargaHoraria;}publicDisciplina(){}publicStringgetCargaHoraria(){returncargaHoraria;}publicvoidsetCargaHoraria(StringcargaHoraria){this.cargaHoraria=cargaHoraria;}publicStringgetCodigo(){returncodigo;}publicvoidsetCodigo(Stringcodigo){this.codigo=codigo;}publicStringgetCpf(){returncpf;}publicvoidsetCpf(Stringcpf){this.cpf=cpf;}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}}
Kanin_Dragon
Os atributos professor e aluno deverão ser de algum tipo Collection. Ex. List, Set, …
O id das entidades Professor e Aluno é o CPF ??? Se sim, acredito que não há necessidade de informar o name
Você poderia testar isso ? remova o parametro name …
[]s
darksteel3000
Rapaz, tu é o kra pow, mermao, foi aquilo mesmo mais pq kra, eu naum entendi pq so tirando os names se tanto faz eu oloca-lo pois no meu banco esta com o mesmo nome. Sinceramente não entendi, podias me explicar a diferença de colocar os names e não coloca-los? Abração !!!
luxu
bom pelo q li vc so deve colocar o COLUMN num campo qdo é diferente no banco…
outra coisa, eu aprendi pra fazer as anotações de COLUMN tem q ser nos getters ou tanto faz?
Kanin_Dragon
Então, o name é utilizado para informar o nome físico da coluna da tabela quando o mesmo for diferente do nome utilizado em seu atributo.
O hibernate utiliza esses names na hora de montar as queries internamente, logo, se você duplicar esse name, quando o hibernate montar as queries ele encontrará duplicidade, gerando o erro.
Então, você só deverá utilizar o parametro name, quando seu atributo tiver um nome diferente da coluna fisica da tabela.