【问题标题】:hibernate: equals returns false due to proxyhibernate:由于代理,equals返回false
【发布时间】:2012-11-14 15:59:39
【问题描述】:

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

【问题讨论】:

  • 你能发布你的实体类和测试用例吗!

标签: hibernate proxy equals


【解决方案1】:

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

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 2016-08-24
    • 2017-12-25
    相关资源
    最近更新 更多