samedi 5 décembre 2015

Testing a massive use of method with @Cacheable

i am trying to solve an issue from work that consists in a method that is called several times in production and breaks, here is the interface's method:

@Cacheable("CategoryDao.findAllLocale")
  Set<Category> findAllLocale(String locale);

And here is the implementation:

public Set<Category> findAllLocale(final String locale) {
    final Set<Category> localeCategories = this.findAllLocaleRootCategories(locale);
    for (final Category rootCategory : localeCategories) {
      final Set<Category> localeChildCategories = this.findAllLocaleByParent(locale, rootCategory.getCatId());
      rootCategory.setCategories(localeChildCategories);
    }
    return localeCategories;
  }

Is a simple DAO method but the problem is that returns a lot of data and in server productions throws this exception:

01-01-15 10:09:47:984 - {ERROR} categories.GetAllCategoriesAction  - User:5007660771072025 - Unexpected exception executing the action
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.company.app.data.Category.categories, no session or session was closed
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)

I think that the exception is something about that the @Cacheable overloads, because the app runs a few hours and works fine but then crash and log that fragment, I want make a "massive" use of this test so i will know is that or something else, any suggestions?

PD: @Cacheable is from ehcache framework PD2: Sorry for my english

Aucun commentaire:

Enregistrer un commentaire