Pessoal estou tentando fazer com que o próprio hibernate crie a foreign key, porém ele me resulta um erro dizendo que o objeto está em uso.
Aproveitando, gostaria de saber qual é a especificação completa para que o Hibernate crie o generator.
Entidade:
package model;
import javax.persistence.AccessType;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
@Entity(access = AccessType.FIELD)
@Table(name = "CATEGORIAS")
public class Categorias {
@Column(name = "ID_CATEGORIA")
// @Id(generate=GeneratorType.SEQUENCE, generator="GEN_ID_CATEGORIA")
//@Id(generate = GeneratorType.AUTO, generator="GEN_ID_CATEGORIA")
@Id(generate = GeneratorType.AUTO)
private int idCategoria;
@Column(length = 40)
private String descricao;
@Column(length = 1)
private char tipo;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "idUsuario", updatable = false)
@PrimaryKeyJoinColumn
private Usuarios usuarios;
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public int getIdCategoria() {
return idCategoria;
}
public void setIdCategoria(int idCategoria) {
this.idCategoria = idCategoria;
}
public char getTipo() {
return tipo;
}
public void setTipo(char tipo) {
this.tipo = tipo;
}
public Usuarios getUsuarios() {
return usuarios;
}
public void setUsuarios(Usuarios usuarios) {
this.usuarios = usuarios;
}
}
/*
Criado por : André Reis
Data : 15/08/2005 - 12:52:38
Nome do Arquivo : Usuarios.java
Nome do Pacote : model
Copyright® 15/08/2005
*/
package model;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.AccessType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity(access = AccessType.FIELD)
@Table(name = "USUARIOS")
public class Usuarios {
@Column(name = "idUsuario")
//@Id(generate=GeneratorType.SEQUENCE, generator="GEN_ID_USUARIO")
@Id(generate = GeneratorType.AUTO)
private int idUsuario;
@Column(length = 50)
private String Nome;
@Column(length = 12)
private String Login;
@Column(length = 12)
private String Senha;
@OneToMany(mappedBy = "usuarios")
private Set<Categorias> categorias = new HashSet<Categorias>();
public String getLogin() {
return Login;
}
public void setLogin(String login) {
Login = login;
}
public String getNome() {
return Nome;
}
public void setNome(String nome) {
Nome = nome;
}
public String getSenha() {
return Senha;
}
public void setSenha(String senha) {
Senha = senha;
}
public Set<Categorias> getCategorias() {
return categorias;
}
public void setCategorias(Set<Categorias> categorias) {
this.categorias = categorias;
}
public int getIdUsuario() {
return idUsuario;
}
public void setIdUsuario(int idUsuario) {
this.idUsuario = idUsuario;
}
}
Log:
14:52:58,016 DEBUG SchemaUpdate:142 - alter table CATEGORIAS add constraint FK6A3131A073A54DFD foreign key (idUsuario) references USUARIOS
14:52:58,076 ERROR SchemaUpdate:148 - Unsuccessful: alter table CATEGORIAS add constraint FK6A3131A073A54DFD foreign key (idUsuario) references USUARIOS
14:52:58,076 ERROR SchemaUpdate:149 - Resource Exception. unsuccessful metadata update
object USUARIOS is in use
Reason: unsuccessful metadata update
object USUARIOS is in use