@rafaelmaps escreveu:
Olá desenvovledores, estou com problema de duas sessões abertas no hibernate. No entanto não consigo descobrir onde tais sessões estão abertas.
Encontrei alguns tópicos na web com o msmo problema só que a maioria estava sem respostas, as que foram respondidas não foram o suficiente pra mim. O erro é título do problema. Acredito que tenha algo a ver com relacionamento N : N. Segue uns códigos:
Fornecedor - Model
@Entity @SequenceGenerator(name = "FORNEC_SEQUENCE", sequenceName = "FORNEC_SEQUENCE", allocationSize = 1, initialValue = 0) @Table(name = "fornecedor") public class Fornecedor implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "FORNEC_SEQUENCE") private Long id; @Column(name = "razao_social", nullable = false) private String razaoSocial; @Column(name = "nome_fantasia", nullable = false) private String nomeFantasia; @Column(name = "end_logradouro", nullable = false) private String logradouro; @Column(name = "end_numero", nullable = false) private String log_numero; @Column(name = "bairro", nullable = false) private String bairro; @Column(name = "cep", nullable = false) private String cep; @ManyToOne @JoinColumn(name = "id_cidade", nullable = false) private Cidade cidade; @ManyToOne @JoinColumn(name = "tipo_pessoa", nullable = false) private TipoPessoa tipoPessoa; @Column(name = "cpf_cnpj", nullable = false, unique = true) private String cpfCnpj; @Column(name = "insc_estadual", nullable = false, unique = true) private String inscEstadual; @Column(name = "insc_municipal") private String inscMunicipal; @Column(name = "telefone", length = 13) private String telefone; @Column(name = "celular", length = 14) private String celular; @Column(name = "email") private String email; @ManyToMany(mappedBy = "fornecedores") private List<Produto> produtos; // <- detalhe pra esse relacionamento ********** @ManyToOne @JoinColumn(name = "usuario") private Usuario usuario;
Produto - Model:
@Entity @SequenceGenerator(name = "PRODUTO_SEQUENCE", sequenceName = "PRODUTO_SEQUENCE", allocationSize = 1, initialValue = 0) @Table(name = "produto") public class Produto implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PRODUTO_SEQUENCE") private Long id; @Column(name = "codigo", unique = true, nullable = false) private Long codigo; @Column(name = "nome", nullable = false) private String nome; @Column(name = "principio_ativo", nullable = false) private String principioAtivo; @Column(name = "unidade_medida", nullable = false, length = 2) private String unidadeMedida; @Column(name = "quantidade_existente") private Integer quantidadeExistente; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = "id_produto") private List<Preco> precoUnitario; @Column(name = "preco_medio") private BigDecimal precoMedio; @Column(name = "local_armazenado", length = 2) private String estoqueLocal; @Column(name = "prateleira_armazenado", length = 3) private String estoquePrateleira; @ManyToMany @JoinTable(name = "produto_has_fornecedor", joinColumns = { @JoinColumn(name = "produto_id")}, inverseJoinColumns = { @JoinColumn(name = "fornecedor_id")}) private List<Fornecedor> fornecedores; @ManyToOne @JoinColumn(name = "tipo_produto", nullable = false) private TipoProduto tpProduto;
FornecedorDAO:
@Override public boolean remover(Fornecedor obj) { try { session = HibernateUtil.getSessionFactory().openSession(); tx = session.beginTransaction(); session.delete(obj); tx.commit(); return true; } catch (Exception e) { tx.rollback(); System.out.println("catch DAO -> " + e.getMessage()); e.printStackTrace(); return false; } finally { session.close(); } }
O erro aparece na hora de excluir um fornecedor.
Grato.
Mensagens: 2
Participantes: 2