Fórum Transação Hibernate #446406
23/06/2013
0
if (empresa.getId() == null) {
enderecoDAO.addEndereco(endereco);
System.out.println(endereco.getId());
empresa.setEndereco(endereco);
empresaDAO.addCategoria(empresa);
FacesMessage facesMessage = new FacesMessage(
"Empresa cadastrado com Sucesso! ");
fc.addMessage(null, facesMessage);
}
DAOGENERIC
protected void savaPojo(Serializable pojo){
Session ses = getSession();
ses.saveOrUpdate(pojo);
ses.getTransaction().commit();
ses.close();
}
EmpresaDAO
public int addCategoria(Empresa empresa){
savePojo(empresa);
return empresa.getId();
}
EndercoDAO
public int addEndereco(Endereco endereco) {
savePojo(endereco);
return endereco.getId();
}
gostaria de saber que forma vocês usam, alguém pode me ajudar?
grato!
Adriano Aguiar
Curtir tópico
+ 0Posts
23/06/2013
Marcelo Senaga
Uma forma seria enviar a entidade empresa (com o endereço setado), e o DAO da Empresa persistir as duas entidades numa mesma transação, e se tudo der certo, dar commit.
Gostei + 0
24/06/2013
Adriano Aguiar
att
Gostei + 0
25/06/2013
Marcelo Senaga
att
Teria como postar o código das 2 entidades. Ai ficaria mais fácil analisar e te passar uma solução mais concreta.
Gostei + 0
25/06/2013
Adriano Aguiar
att
Gostei + 0
29/06/2013
Marcelo Senaga
att
Deu sim. Dessa forma está correta sim. Outro jeito é usando Cascate, onde ao salvar a entidade principal, ela já seta a dependência:
http://www.rndblog.com/hibernate-how-to-insert-onetomany-children-by-cascade/
Gostei + 0
29/06/2013
Adriano Aguiar
@Entity
@Table(name = "empresa")
public class Empresa implements Serializable {
private static final long serialVersionUID = -312317668584983632L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id ;
@Column(name = "nome", length = 60)
private String nome;
@Column(name = "RazaoSocial", length = 100)
private String razaoSocial;
@Column(name = "CNPJ", length = 100)
private String cnpj;
private String inscricaoEstadual;
@Column(name = "Email", length = 100)
private String email;
@Column(name = "telefone", length = 20)
private String telefone;
@ManyToOne
@JoinColumn(name = "id_endereco")
@NotNull
private Endereco endereco;
}
Entity
@Table(name = "endereco")
public class Endereco implements Serializable {
private static final long serialVersionUID = -312317668584983632L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "Rua", length = 100)
private String rua;
@Column(name = "numero", length = 10)
private Integer numero;
@Column(name = "complemento", length = 60)
private String complemento;
@Column(name = "CEP", length = 10)
private String cep;
@Column(name = "Bairro", length = 40)
private String bairro;
@ManyToOne
@JoinColumn(name = "id_cidade")
@NotNull
private Cidade cidade;
}
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)