Olá galera, tudo bem?
Estou tentando resolver este problema mas não estou conseguindo evoluir com as pesquisas que tenho feito. Meu cenário é o seguinte:
Tenho uma classe chamada Plano. Ela possui muitas Ações e muitas Interações. Por isso as coloquei em uma List. Segue o modelo dela:
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import javax.persistence.*;
import java.util.Calendar;
import java.util.List;
@Entity
@Table(name = "Plano")
@TableGenerator(
name = "PLANO_GEN",
table = "PLANO_ID",
pkColumnName = "ID",
pkColumnValue = "PLANO",
valueColumnName = "VALOR",
allocationSize = 1
)
public class Plano {
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "PLANO_GEN")
private Long id;
@ManyToOne
@JoinColumn(name = "id_representante")
private Representante representante;
@ManyToOne
@JoinColumn(name = "id_conta")
private Conta conta;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "id_plano")
private List<Acao> acoes;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "id_plano")
private List<Interacao> interacoes;
}
Cada plano está ligado a uma Conta e a um Representante.
Eu gostaria de realizar um consulta, listando o plano cadastrado. O resultado deveria trazer os dados do Plano e os dados das relações de Conta, Representante, Ações e Interações. Este é o meu método Dao:
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import java.util.ArrayList;
import java.util.List;
@Repository
public class PlanoDao {
public List<Plano> planos() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("Plano");
EntityManager manager = factory.createEntityManager();
List<Plano> planos = manager.createQuery("select p from Plano as p join fetch p.acoes join fetch p.interacoes").getResultList();
manager.close();
factory.close();
return planos;
}
}
Ao executá-lo obtenho o erro:
cannot simultaneously fetch multiple bags:
Ao retirar a palavra fetch da consulta obtenho o erro:
failed to lazily initialize a collection of role
Por favor, poderiam me ajudar com este caso?
Valeu!