O hibernate não se importa sobre o relacionamento do seu banco… em resumo, não precisa existir relacionamento no seu banco, basta definilo no Hibernate…
basta remover a anotação Transient… e colocar @OneToOne ou @ManyToOne … depender de como é a relação…
@JoinColumn(name = "funcionario_id", referencedColumnName = "id")
@ManyToOne(optional = false, fetch = EAGER, cascade={PERSIST,MERGE,REFRESH})
private Funcionario funcionario;
neste meu caso estou supondo que na tabela registro, vc tenha um campo chamado de “funcionario_id” se não for esse o caso, troque o nome do campo
estou ainda informando que na tabela funcionario, o campo de junção, ou seja, a ForingKey se junta no campo “id” da tabela funcionario, se não for esse o caso, troque o nome do campo…
Fora esses dados, estou falando que o objeto é populado em EAGER , ou seja, modo faminto, a consulta é feita com o inner join declarado juntos, ou seja, é feito 1 selec apenas para popular tanto o funcionario, como o registro…
estou informando ainda que existe propagação, ou seja Cascade, e que ao realizar insert em registro(persist) eu estarei juntamente inserindo o funcionario (se for preciso) ou atualizando seus dados (caso o funcionario seja persistente) … ao realizar update(merge) os dados do funcionário tb serão persistidos/atualizados … e ao realizar um refresh no registro, os dados do funcionários tb serão atualizados… porem note, que ao remover um registro, nada será feito ao funcionário, se quiser que isso se propage, adciona REMOVE ao cascade.
Os importes necessários para as anotações que citei são:
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import static javax.persistence.FetchType.EAGER;
import static javax.persistence.CascadeType.MERGE;
import static javax.persistence.CascadeType.PERSIST;
import static javax.persistence.CascadeType.REFRESH;