Mensagem de Erro sem Solução

2 respostas
aquino.vale

Pessoal,

Meu problema é o seguinte tenho um DB postgresql o qual é criado pelo próprio hibernate, os relacionamentos estão todos corretos mas quando faço a chamada da Entidade me retorna o seguinte erro.
org.hibernate.MappingException: Repeated column in mapping for entity: br.com.coliseu.modelo.Cronologia column: categoria (should be mapped with insert=“false” update=“false”)

Pesquisei no forum e em outro sites e me mandam colocar exatamente o que a mensagem de erro pede, segue o relacionamento com problemas

public final class CronologiaPk implements Serializable{
        @ManyToOne
	@JoinColumns({@JoinColumn(name="categoria", referencedColumnName="categoria"),
				  @JoinColumn(name="times", referencedColumnName="times"),
				  @JoinColumn(name="historico", referencedColumnName="codhistorico")})
	private Historico historico;
	
	@ManyToOne
	@JoinColumns({@JoinColumn(name="categoria", referencedColumnName="categoria"),
				  @JoinColumn(name="times", referencedColumnName="times"),
				  @JoinColumn(name="usuario", referencedColumnName="usuario")})
	private Albuns album;

// metodos getter e setter omitidos
}

Coloquei insert=“false” update=“false” em todos os relacionamentos e mesmo assim a mensagem continua, e quando ai adiciono o metodo insert=false e update=false me aparece outro mensagem de erro

org.hibernate.AnnotationException: Mixing insertable and non insertable columns in a property is not allowed: br.com.coliseu.chavespk.CronologiaPkalbum

Alguém pode me ajudar…

2 Respostas

drsmachado

Uma simples googlezada me trouxe uma resposta que é interessante. http://www.coderanch.com/t/217640/ORM/java/Repeated-column-mapping-entity-insert. Na resposta do Hsitas Hickory, a última da página, ele informa “This also happens when the column name is repeated.” ou seja, como você está utilizan do as colunas para Historico e Album, seria interessante colocar nomes diferentes para a categoria e times.

Mais informações, pesquisa no google com a mensagem do erro.

aquino.vale

minha tabela seria assim

Tabela Historico

Pk - FK - CodCategoria - Chave Pk - Fk da Tabela Time
Pk - Fk - CodTime - Chave Pk da Tabela Time
PK - Codhistorico (AutoIncremento)

Tabela Album
Pk - FK - CodCategoria - Chave Pk - Fk da Tabela Time
Pk - Fk - CodTime - Chave Pk da Tabela Time
PK - FK - CodUser - Chave Pk da tabela Usuario

Estas tabelas os campo Codtime e codCategoria armazenam os mesmo dados na Tabela Cronologia

Tabela Cronologia
Pk - FK - CodUser - Chave Pk - FK da tabela Album
PK - FK - CodHistorico - Chave Pk da tabela Historico
Pk - FK - CodTime - Chave PK - FK da Tabela Historico/Album
Pk - FK - CodCategoria - Chave PK - FK da Tabela Historico/Album

Alterei o nome do campo o erro some, mas como minhas tabelas sao criadas pelo Hibernate, e quando eu mudo o nome do campo igual vc falou o hibernate não consegue gerar meu Schema…

public final class CronologiaPk implements Serializable{

	@ManyToOne
	@JoinColumns({@JoinColumn(name="categoria", referencedColumnName="categoria"),
				  @JoinColumn(name="times", referencedColumnName="times"),
				  @JoinColumn(name="historico", referencedColumnName="codhistorico")})
	private Historico historico;
	
	@ManyToOne
	@JoinColumns({@JoinColumn(name="categoria", referencedColumnName="categoria"),
				  @JoinColumn(name="times", referencedColumnName="times"),
				  @JoinColumn(name="usuario", referencedColumnName="usuario")})
	private Albuns album;

// Alterando os nomes  igual esta abaixo funciona, mas nao fgera o Schema do Hibernate como esta em cima.
 	@ManyToOne
	@JoinColumns({@JoinColumn(name="categoriaAlbum", referencedColumnName="categoria"),
				  @JoinColumn(name="timesAlbum", referencedColumnName="times"),
				  @JoinColumn(name="usuario", referencedColumnName="usuario")})
	private Albuns album;
}

Vcs tem alguma outra solução…

Criado 23 de maio de 2011
Ultima resposta 23 de mai. de 2011
Respostas 2
Participantes 2