Unique Key com hibernate annotations

1 resposta
N

Olá.
Preciso fazer uma unique key utilizando os campos descricao e categoriaMestre:

@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames={"descricao", "categoriaMestre"})})
public class Categoria extends EntidadePadrao {
	@Column(nullable = false)
	private String descricao;
	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
	private Categoria categoriaMestre;
	@OneToMany(mappedBy = "id", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	private List<Categoria> categorias;

	/* (...) */
}

O problema é que, na hora de exportar o banco, o hibernate reclama assim:

Exception in thread "main" org.hibernate.AnnotationException: Unable to create unique key constraint (descricao, categoriaMestre) on table Categoria: categoriaMestre not found
    at org.hibernate.cfg.AnnotationConfiguration.buildUniqueKeyFromColumnNames(AnnotationConfiguration.java:616)
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:348)
    at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:789)
    at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:128)
    at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:91)
    at br.com.financero.comum.util.GeraBanco.main(GeraBanco.java:10)

Alguém faz ideia do que possa ser?

Desde já, obrigado.

1 Resposta

lessandronp

Olá amigo…
Provavelmente vc não têm essa coluna mapeada na sua classe modelo (tabela no banco de dados).
Verifique se o nome da coluna é esse mesmo, talvez vc tenha colocado algo como: categoria_mestre.
O que deve estar aqui é o nome da coluna e não o nome do atributo.
Abs,
Lessandro

Criado 11 de outubro de 2010
Ultima resposta 28 de mar. de 2011
Respostas 1
Participantes 2