У меня есть этот проект SpringBoot, где одно свойство моей сущности является LAZY, но когда я пытаюсь получить таблицу, которая зависит от этой сущности (я просто пытаюсь использовать Postman), я продолжаю получать эту ошибку-
{
"timestamp": 1545232817105,
"status": 500,
"error": "Internal Server Error",
"message": "Could not write JSON: failed to lazily initialize a collection of role: br.com.quantus.fonumS3_api.model.GesUsuarios.fnmCampanhaOpesForFnmCampanhaOpeOperador, could not initialize proxy - no Session; nested exception is com.fasterxml.jackson.databind.JsonMappingException: failed to lazily initialize a collection of role: br.com.quantus.fonumS3_api.model.GesUsuarios.fnmCampanhaOpesForFnmCampanhaOpeOperador, could not initialize proxy - no Session (through reference chain: java.util.ArrayList[0]->br.com.quantus.fonumS3_api.model.GesUsuarios[\"fnmCampanhaOpesForFnmCampanhaOpeOperador\"])",
"path": "/FonumAPI/GesUsuarios"
}
Вот как я настраиваю свои модели, репозитории и ресурсы:
//MODEL
@Entity
@Table(name = "ges_usuarios_015", schema = "public", uniqueConstraints = @UniqueConstraint(columnNames = "login_015"))
public class GesUsuarios implements java.io.Serializable {
private static final long serialVersionUID = 6598890791981509364L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "codigo_015", unique = true, nullable = false)
private Integer codigo015;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "turno_015")
private GerTurno gerTurno;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tipo_015")
private GerTipoUsuario gerTipoUsuario;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "status_015")
private GerStatusUsuario gerStatusUsuario;
....
//REPOSITORY
import org.springframework.data.jpa.repository.JpaRepository;
import model.GesUsuarios;
public interface GesUsuariosRepository extends JpaRepository<GesUsuarios, Integer> {
}
//RESOURCE
@CrossOrigin("${origem-permitida}")
@RestController
public class GesUsuariosResource {
@Autowired
private GesUsuariosRepository gesUsuariosRepository;
@GetMapping("/GesUsuarios")
public List<GesUsuarios> ListarGesUsuarios(){
return gesUsuariosRepository.findAll();
}
....
Я не могу использовать EAGER, потому что у меня есть тонны данных в моей БД, поэтомустановится довольно медленнымС другой стороны, при использовании LAZY я продолжаю сталкиваться с этой проблемой.
Я полагаю, это потому, что jpa закрывает сессию, прежде чем обратиться к модели внешнего ключа.
Как мне избежать этой проблемы?