The problem is not always reproducible, it's when getting my object from the database using CriteriaBuilder.
Code :
@Entity
@Table(name = MyEntityObject.TABLE_NAME)
@Access(AccessType.FIELD)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@BatchSize(size = 50)
public class MyEntityObject extends AbstractCodeEntity implements Comparable<MyEntityObject> {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<MyEntityObject> criteriaQuery = builder.createQuery(MyEntityObject.class);
Root<MyEntityObject> root = criteriaQuery.from(MyEntityObject.class);
Predicate condition = builder.equal(root.get(MyEntityObject.code), code);
boolean distinct = FetchBuilder.buildFetchs(root, fetchsOperations);
criteriaQuery.distinct(distinct).where(condition);
TypedQuery<MyEntityObject> query = entityManager.createQuery(criteriaQuery);
return query.getSingleResult();
Of course MyEntityObject has attributes as lazy and others as eager
When I'm debugging, the returned object contains a handler = {JavassistLazyInitializer@19574} + objet attributes which are null.
I've tried to find out if hibernate go look for it on the database => he did
Then if the object exists on 1st cach => it doesn't
Anyone have an idea ?