Hibernate: LazyInitializationException: échec paresseusement initialiser une collection de rôle. N'a pas pu initialiser proxy - pas de Session

J'ai erreur suivante: nested exception is org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.example.Model.entities, could not initialize proxy - no Session

Mon Model entité:

class Model {
...
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "model", orphanRemoval = true)
    @Cascade(CascadeType.ALL)
    @Fetch(value = FetchMode.SUBSELECT)
    public Set<Entity> getEntities() {
        return entities;
    }

    public void addEntity(Entity entity) {
        entity.setModel(this);
        entities.add(entity);
    }

}

Et j'ai une classe de service:

@Service
@Transactional
class ServiceImpl implements Service {
    @Override
    public void process(Model model) {
        ...
        model.addEntity(createEntity());
        ...
    }
}

Je vais appeler le service à partir d'une autre méthode de service:

@Override
@JmsListener(destination = "listener")
public void handle(final Message message) throws Exception {
    Model model = modelService.getById(message.getModelId());
    serviceImpl.process(model);
    modelService.update(model);
}

Mais quand j'essaie d'appeler cette méthode, je suis d'exception sur la ligne entities.add(entity); également la même exception se produit lorsque je vais appeler getEntities() sur model .
J'ai vérifié le gestionnaire de transactions et qu'il est configuré correctement et de transaction existe sur cette étape. Aussi, j'ai vérifié des tonnes de réponses sur stackoverflow connecté à cette exception, mais rien d'utile.

Ce qui pourrait être la cause de cela?

Quand vous dites "transaction existe sur cette étape" vous voulez dire que vous avez vérifié que l'opération est très ouverte, comme l'utilisation de stackoverflow.com/a/42584751/3517383?
oui
Est une entité d'un nouvel objet? Si c'est le cas, vous devez enregistrer l'entité premier objet dans la base de données et ensuite vous pouvez l'ajouter dans la liste des entités.
Je suppose que vous avez tort, fait appel de modèle.getEntities() me donne le même message d'erreur à propos de lazyinitialization

OriginalL'auteur Orest | 2017-03-21