hibernate:equals由于代理而返回false

时间:2012-11-14 15:59:39

标签: hibernate proxy equals

我已经实现了equals(使用lombok和我的业务键)。在单元测试中,我想要一个简单的assertEquals但是返回的(来自hibernate)对象相关对象是一个代理。我怎样才能得到实际的实体?

1 个答案:

答案 0 :(得分:0)

您必须使用初始化程序。见下面的方法示例。在比较之前使用此方法,以确保您不比较代理。

public static <T> T initializeAndGetTargetObject(T entity) {
    if (entity == null) {
        throw new 
           NullPointerException("Entity passed is null");
    }

    Hibernate.initialize(entity);
    if (entity instanceof HibernateProxy) {
        entity = (T) ((HibernateProxy) entity).getHibernateLazyInitializer()
                .getImplementation();
    }
    return entity;
}