Hibernate返回一个对象,该对象不是null,但它本身却异常懒惰:JavassistLazyInitializer



问题并不总是可重复的,而是在使用CriteriaBuilder从数据库中获取对象时。

代码:

@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();

当然,MyEntityObject具有惰性属性和渴望属性

调试时,返回的对象包含一个处理程序={JavassistLazyInitializer@19574}+为null的objet属性。

我试着找出hibernate是否会在数据库中查找它=>他做了

然后,如果对象存在于第一个cach=>它不是

有人有主意吗?

我这边有两个注意事项-不确定这是否完全涵盖了您的问题:

  • 检查没有为类org.hibernate.proxy.pojo.javassist.javassist找到序列化程序?如果某些解决方案可以应用于您的案例
  • 您序列化实体的目的是什么?也许您可以找到一种方法,将相关值复制到另一个对象中,而不序列化实体

相关内容

  • 没有找到相关文章

最新更新