How to convert a Hibernate proxy to a real entity object How to convert a Hibernate proxy to a real entity object java java

How to convert a Hibernate proxy to a real entity object


Here's a method I'm using.

public static <T> T initializeAndUnproxy(T entity) {    if (entity == null) {        throw new            NullPointerException("Entity passed for initialization is null");    }    Hibernate.initialize(entity);    if (entity instanceof HibernateProxy) {        entity = (T) ((HibernateProxy) entity).getHibernateLazyInitializer()                .getImplementation();    }    return entity;}


Since Hibernate ORM 5.2.10, you can do it likee this:

Object unproxiedEntity = Hibernate.unproxy(proxy);

Before Hibernate 5.2.10. the simplest way to do that was to use the unproxy method offered by Hibernate internal PersistenceContext implementation:

Object unproxiedEntity = ((SessionImplementor) session)                         .getPersistenceContext()                         .unproxy(proxy);