JavaSpring如何检查两个对象是否相等,其中一个是否延迟加载
我尝试比较两个对象-其中一个是延迟加载的:JavaSpring如何检查两个对象是否相等,其中一个是否延迟加载,java,spring-boot,hibernate,Java,Spring Boot,Hibernate,我尝试比较两个对象-其中一个是延迟加载的: @Entity public class Path{ public void removePoint(Point point) { if (point.getPath() != null && point.getPath() != this) { throw new IllegalArgumentException(String.format("Point %s does not belong to
@Entity
public class Path{
public void removePoint(Point point) {
if (point.getPath() != null && point.getPath() != this) {
throw new IllegalArgumentException(String.format("Point %s does not belong to path%s", point, this));
}
point.setPath(null);
this.getPoints().remove(point);
}
}
检查:
window.getPath().removePoint(point);
问题是这两个对象没有相同的引用:point.getPath()
和this
问题是,这两个obejct具有不同引用的原因是否是其中一个是延迟加载的(类似于
Path$HibernateProxy)$Di4Siuwn@32825
)?如果对象是延迟加载的,那么它们将不是您定义的实际实体类,而是您现在发现的路径$HibernateProxy的代理实现$Di4Siuwn@32825
在java中,通常应该使用equals方法来比较对象。Hibernate实体可能需要一些额外的处理来帮助进行相等比较。请详细阅读本文
非常感谢您的回答-我想这就是我要寻找的答案:)精彩的文章!