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.