hibernate:equals由于代理而返回false

hibernate:equals由于代理而返回false,hibernate,proxy,equals,Hibernate,Proxy,Equals,我已经实现了equals(使用lombok和我的业务密钥)。在单元测试中,我想使用一个简单的assertEquals,但是返回的(来自hibernate)对象相关对象是代理。如何获取实际实体?必须使用初始值设定项。参见下面的方法示例。在比较之前使用此方法以确保您没有比较代理 public static <T> T initializeAndGetTargetObject(T entity) { if (entity == null) { throw new

我已经实现了equals(使用lombok和我的业务密钥)。在单元测试中,我想使用一个简单的assertEquals,但是返回的(来自hibernate)对象相关对象是代理。如何获取实际实体?

必须使用初始值设定项。参见下面的方法示例。在比较之前使用此方法以确保您没有比较代理

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;
}
public静态T initializeAndGetTargetObject(T实体){
if(实体==null){
抛出新的
NullPointerException(“传递的实体为null”);
}
初始化(实体);
if(HibernateProxy的实体实例){
实体=(T)((HibernateProxy)实体).getHibernateLazyInitializer()
.getImplementation();
}
返回实体;
}

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