Bom dia galeara, estou tendo dificuldade com Herança usando Annotations, é o seguinte tenho a classe Mãe.
@Entity
@Table(name = "funcionario", catalog = "sitransp")
@Inheritance(strategy = InheritanceType.JOINED)
public class Funcionario implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idFuncionario", unique = true)
private Integer idFuncionario;
@OneToOne(mappedBy = "funcionario", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
@JoinColumn(name = "idUsuario",insertable = false, updatable = false)
private Usuario usuario;
@OneToOne(mappedBy = "funcionario")
@Cascade(CascadeType.ALL)
@JoinColumn(name = "idMotorista", insertable = false, updatable = false)
private Motorista motorista;
//getters e setters
e as classes filhas,
@Entity
@Table(name = "usuario", catalog = "sitransp")
@PrimaryKeyJoinColumn(name = "Funcionario_idFuncionario")
public class Usuario extends Funcionario implements Serializable {
/**/@OneToOne(mappedBy = "usuario", fetch = FetchType.LAZY)
@JoinColumn(name = "idFuncionario", referencedColumnName = "idFuncionario")
private Funcionario funcionario;
//getters e setters
e,
@Entity
@Table(name = "motorista", catalog = "sitransp")
@PrimaryKeyJoinColumn(name = "idFuncionario")
public class Motorista extends Funcionario implements Serializable {
@OneToOne(mappedBy = "motorista", fetch = FetchType.LAZY)
@JoinColumn(name = "idFuncionario", referencedColumnName = "idFuncionario")
@OneToOne
private Funcionario funcionario;
//getters e setters
eu criei uma classe teste, onde verifico se esta sendo inserido corretamente
public static void main(String[] args) {
Session session;
//linha 35
session = new AnnotationConfiguration().configure(PathConfHibernate.doPath()).buildSessionFactory().openSession();
//session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Usuario usuario = new Usuario();
Motorista motorista = new Motorista();
TpUsuario tpUsuario = new TpUsuario();
MotoristaDaoImpl motoDaoImpl = new MotoristaDaoImpl(session);
UsuarioDaoImpl usDao= new UsuarioDaoImpl(session);
//TipoUsuario tp = TipoUsuario.COMUM.getDesc() ;
Departamento dep = new Departamento();
dep.setNome("Academico");
usuario.setNome("Ataulfo Alves");
usuario.setMatricula(201022);
usuario.setDepartamento(dep);
//usuario.setTpusuario(tpUs);
motorista.setMatricula(20100607);
motorista.setNome("Galileu Galilei");
motorista.setCnh(123456);
motorista.setEmail("galileu@gmail.com");
dep.setNome("Academico");
motorista.setDepartamento(dep);
motoDaoImpl.save(motorista);
usDao.save(usuario);
tx.commit();
session.close();
contudo, quando executo a classe apresenta erro de nullpointer no relacionamento OneToOne dos mapeamentos da Herança,
Exception in thread "main" java.lang.NullPointerException
at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:135)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:296)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
at br.sitransp.teste.Teste.main(Teste.java:35)
Java Result: 1
alguem ai poderia dar um help!