Tenho as seguintes classes:
@Entity
@Table(name = "cargos")
public class Cargo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String descricao;
@OneToMany(mappedBy = "cargo", fetch=FetchType.EAGER)
private List<Funcionario> funcionario;
{...}
}
@Entity
@Table(name = "funcionarios")
public class Funcionario {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String nome;
private String cpf;
private Double salario;
private LocalDate dataContratacao;
@ManyToOne
@JoinColumn(name = "cargo_id", nullable = false)
private Cargo cargo;
@Fetch(FetchMode.SELECT)
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "funcionarios_unidades", joinColumns = {
@JoinColumn(name = "fk_funcionario") },
inverseJoinColumns = { @JoinColumn(name = "fk_unidade")})
private List<UnidadeTrabalho> unidades;
{...}
}
@Entity
@Table(name = "unidades")
public class UnidadeTrabalho {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String descricao;
private String endereco;
@ManyToMany(mappedBy = "unidades", fetch = FetchType.EAGER)
private List<Funcionario> funcionarios;
{...}
}
e no meu FuncionarioRepository tenho os métodos:
//JPQL
@Query("SELECT f FROM Funcionario f WHERE f.nome = :nome AND f.salario >= :salario AND f.dataContratacao = :data")
List<Funcionario> findNomeSalarioMaiorDataContratacao(String nome, Double salario, LocalDate data);
//Native Query
@Query(value = "SELECT * FROM funcionarios f WHERE f.data_contratacao >= :data",
nativeQuery = true)
List<Funcionario> findDataContratacaoMaior(LocalDate data);
o JPQL funciona mas o Native Query está retornando o seguinte erro:
"Caused by: org.hibernate.LazyInitializationException: could not initialize proxy [br.com.jpa.spring.data.orm.Cargo#1] - no Session"