org.hibernate.LazyInitializationException: не удалось лениво инициализировать коллекцию ролей при использовании Javers - PullRequest
0 голосов
/ 17 октября 2019

Я получаю сообщение об ошибке: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.fleetx.persistence.model.Account.users, could not initialize proxy - no Session

, когда я пытаюсь выполнить операцию создания на одном из объектов, которые пытаюсь проверить с помощью Javers. Ниже приведена структура моего приложения:

AudityEntity.java

@Data
@Entity
@Table
public class AuditEntity extends Base {
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "account_id", updatable = false)
    @JsonIgnore
    private Account account;

    // other fields
}

Account.java

@Data
@Entity
@Table
public class Account extends Base {
    @OneToMany(mappedBy = "account", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JsonIgnore
    private List<User> users;

    // other fields
}

AuditEntityRepository.java

@JaversSpringDataAuditable
public interface AuditEntityRepository extends JpaRepository<AuditEntityRepository, Long> {
    // crud operations
}

Я не хочу менять тип выборки с private Account account; или private List<User> users; на FetchType.EAGER.

Любая помощь будет принята с благодарностью. Thankyou.

1 Ответ

0 голосов
/ 17 октября 2019

Если вы не хотите менять значение на FetchType.EAGER, то, где бы вы ни находились, Account.getUsers() должно быть в транзакции, чтобы сеанс Hibernate не отбрасывался. Самый простой способ сделать это - добавить @Transactional к методу службы или bean-компонента, к которому осуществляется доступ fetching и getUsers (). Убедитесь, что транзакции включены с @EnableTransactionManagement.

...