Я добавил атрибут, который может быть проблемой, у него было одно и то же имя столбца в yEntity и xEntity, но он не является частью связи (целое число yEntity в yEntity, которое является ссылкой на другой объект (тот же класс)).
Более того
В отладке я получаю эту ошибку, когда пытаюсь для проверки xEntity
Код: Выделить всё
Method threw 'org.hibernate.exception.GenericJDBCException' exception. Cannot evaluate fr.gouv.isidor.importation.infra.database.entity.themes.ThemeGroupeEntity$HibernateProxy$eChsTNoK.toString()Я столкнулся с проблемой отложенной загрузки в приложении Spring Boot. Когда я использую FetchType.LAZY в отношении @ManyToOne, я не могу получить связанный объект и получаю сообщение об ошибке, указывающее, что объект с определенным идентификатором не может быть найден. Однако когда я переключаюсь на FetchType.EAGER, проблема исчезает в той части кода, над которой я сейчас работаю, но нарушает другой ранее реализованный раздел, вызывая ту же ошибку.
Сущности
Вот две сущности, участвующие в этой связи:
XEntity
Код: Выделить всё
@Entity
@Table(name = "x")
public class xEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "nom", nullable = false)
private String nom;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_y", referencedColumnName = "id", nullable = false)
private yEntity yEntity;
// Getters and setters
}
Код: Выделить всё
@Table(name = "y")
public class yEntity{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "theme_groupe_id_generator_seq")
@SequenceGenerator(name = "theme_groupe_id_generator_seq", sequenceName = "theme_groupe_id_seq", allocationSize = 1)
@Column(name = "id", nullable = false)
private Integer id;
@OneToMany(mappedBy = "yEntity", cascade = CascadeType.ALL, orphanRemoval = true)
private List themes;
@Column(name="id_y")
private Integer yEntity;
// Getters and setters
}
Когда я пытаюсь получить доступ к yEntity из xEntity с помощью FetchType.LAZY, я получаю следующую ошибку :
Код: Выделить всё
Unable to find fr.gouv.isidor.importation.infra.database.entity.themes.ThemeGroupeEntity with id 4- Убедитесь, что сеанс открыт использование @Transactional для каждого метода, вызывающего репозиторий.
- Использование Hibernate.initialize() для принудительной инициализации. Проверено, что
объект с данным идентификатором существует в базе данных. - Проверено с помощью FetchType.EAGER, который работает в текущей части кода, но
вызывает ошибку та же проблема в другом разделе (в данном случае код работает с LAZY, а не с EAGER).
Для вызова xEntity во втором случае (кто работает с LAZY, а не с EAGER) я Я использую nativ jpa findByName(String name).
Как правильно настроить отложенную загрузку для ассоциации ThemeGroupeEntity в ThemeEntity, чтобы избежать этой ошибки? Будем очень признательны за любые идеи или решения.
Подробнее здесь: https://stackoverflow.com/questions/787 ... tity-by-id
Мобильная версия