Olá amigos !
Estou desenvolvendo um sistema e acredito estar realizando algum procedimento incorreto para o erro que está sendo apresentado pelo NetBeans.
Tenho as seguintes classes UsuárioSistema e Perfil. A primeira classe representa o usuário que irá logar no sistema. A classe perfil representa o tipo de usuário que irá acessar o sistema (usuário comum ou administrador). O problema ocorre na inserção de dados na classe que recebe uma chave estrangeira através da classe principal. Como devo proceder para passar esse valor, ou seja, que tipo de método deve ser criado ? Segue abaixo também a classe principal e o erro que está ocorrendo. Desde já muito obrigado !
package businessObjects;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="tab_usuariosistema")
public class UsuarioSistema implements Serializable {
//Anotações da Classe
@Id
@GeneratedValue
@Column(name="idUsuarioSistema", nullable=false, unique=true)
private Integer idUsuarioSistema;
@Column(name="nomeusuarioUsuarioSistema", nullable=false, length=50, unique=true)
private String nomeusuarioUsuarioSistema;
@Column(name="senhausuarioUsuarioSistema", nullable=false, length=100)
private String senhausuarioUsuarioSistema;
//Relacionamento com a Classe Perfil
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="idPerfil", referencedColumnName="idPerfil", nullable=false)
private Perfil perfil;
// Getters e Setters da Classe
public Integer getIdUsuarioSistema() {
return idUsuarioSistema;
}
public void setIdUsuarioSistema(Integer idUsuarioSistema) {
this.idUsuarioSistema = idUsuarioSistema;
}
public String getNomeusuarioUsuarioSistema() {
return nomeusuarioUsuarioSistema;
}
public void setNomeusuarioUsuarioSistema(String nomeusuarioUsuarioSistema) {
this.nomeusuarioUsuarioSistema = nomeusuarioUsuarioSistema;
}
public String getSenhausuarioUsuarioSistema() {
return senhausuarioUsuarioSistema;
}
public void setSenhausuarioUsuarioSistema(String senhausuarioUsuarioSistema) {
this.senhausuarioUsuarioSistema = senhausuarioUsuarioSistema;
}
}
package businessObjects;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="tab_perfil")
public class Perfil implements Serializable {
//Anotações da Classe
@Id
@GeneratedValue
@Column(name="idPerfil", nullable=false, unique=true)
private Integer idPerfil;
@Column(name="nomePerfil", nullable=false, length=50, unique=true)
private String nomePerfil;
//Relacionamento com a Classe UsuarioSistema
@OneToMany(mappedBy="perfil")
private List <UsuarioSistema> usuariosistema;
//Setters e Getters da Classe
public Integer getIdPerfil() {
return idPerfil;
}
public void setIdPerfil(Integer idPerfil) {
this.idPerfil = idPerfil;
}
public String getNomePerfil() {
return nomePerfil;
}
public void setNomePerfil(String nomePerfil) {
this.nomePerfil = nomePerfil;
}
public List<UsuarioSistema> getUsuariosistema() {
return usuariosistema;
}
public void setUsuariosistema(List<UsuarioSistema> usuariosistema) {
this.usuariosistema = usuariosistema;
}
Classe principal
package businessObjects;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
public class Teste {
public static void main(String[] args) {
Configuration cfg = new AnnotationConfiguration();
cfg.configure("/conf/hibernate.cfg.xml");
SessionFactory sf = cfg.buildSessionFactory();
Session session = sf.openSession();
org.hibernate.Transaction tx = session.beginTransaction();
UsuarioSistema usuario = new UsuarioSistema();
usuario.setIdUsuarioSistema(1);
usuario.setNomeusuarioUsuarioSistema("willyan");
usuario.setSenhausuarioUsuarioSistema("a1b2c3d4");
session.save(usuario);
tx.commit();
session.close();
}
}
Erro:
Exception in thread "main" org.hibernate.PropertyValueException: not-null property references a null or transient value: businessObjects.UsuarioSistema.
