Prezados,
O Objeto Profissão TEM UM objeto Usuário.
A idéia é Inserir uma “Profissão” ao banco, e ao mesmo tempo inserir seu objeto Usuário por Cascade. Deu para entender?
Quando utilizo o CascadeType.ALL, ele insere a Profissão e seu respectivo Usuário normalmente.
Porém quando utilizo CascadeType.Persist não insere o usuário, inserindo somente a Profissão =/
Quando inserir meu objeto pai “Profissão”, ele não deveria também inserir o filho com o CascadeType.Persist?
A pergunta então é: “Por quê o Hibernate está somente inserindo a Profissão e não o usuário no Banco?”
Segue abaixo o código resumido somente com o necesário.
Profissao profissao = new Profissao();
profissao.setIdentificador(2);
profissao.setNomeProfissao("Contador");
profissao.setSalarioProfissao(5000.00);
Usuario usuario = new Usuario();
usuario.setIdentificador(3);
usuario.setNomeUsuario("Everaldo");
usuario.setIdadeUsuario(40);
profissao.setUsuarioProfissao(usuario);
session.save(profissao);
transaction.commit();
@Entity
@Table(name = "jobs")
public class Profissao implements Serializable {
/**
*
*/
private static final long serialVersionUID = 5659098257378287517L;
@Id
@Column(name = "id")
Integer identificador;
@Column(name = "name")
String nomeProfissao;
@Column(name = "salary")
Double salarioProfissao;
@OneToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name = "user_id")
Usuario usuarioProfissao;
@Entity
@Table(name="users")
public class Usuario implements Serializable {
/**
*
*/
private static final long serialVersionUID = -2942017673557453045L;
@Id
@Column(name="id")
private Integer identificador;
@Column(name="name")
private String nomeUsuario;
@Column(name="age")
private Integer idadeUsuario;
static public Session getSession(){
SessionFactory sessionFactory = new AnnotationConfiguration().
setProperty("hibernate.dialect", "org.hibernate.dialect.OracleDialect").
setProperty("hibernate.connection.driver_class", "oracle.jdbc.driver.OracleDriver").
setProperty("hibernate.connection.url", "jdbc:oracle:thin:@localhost:1521:XE").
setProperty("hibernate.connection.user", "HibernateMastery").
setProperty("hibernate.connection.password", "dbzgtaf").
addAnnotatedClass(com.diogo.orm.Usuario.class).
addAnnotatedClass(com.diogo.orm.Profissao.class).
buildSessionFactory();
return sessionFactory.openSession();
}