Me pregunto cómo escribir un equals() y hashCode() correctos para Hibernate Entities que tienen una relación Lazy Loaded ManyToOne con otra entidad que es importante como una clave de negocios. Tenga en cuenta que ya leí the Hibernate documentation on this topic y sé que debo/no debo usar el ID del objeto.Hibernate/JPA es igual a() y hashCode() con Identificador de carga de Lazy Business
Para aclarar, aquí un ejemplo:
public class BusinessEntity implements Serializable
{
//for simplicity, here just the important part
private String s;
@ManyToOne(fetch= FetchType.LAZY)
private ImportantEntity anotherEntity;
@Override
public boolean equals(Object obj)
{
//Here I would like to call something like
// (obj.getAnotherEntity.getName.equals(getAnotherEntity.getName) && obj.getS().equals(getS());
return true;
}
}
Por supuesto, esto es sólo un ejemplo simplificado. Pero espero poder explicar mi situación. ¿Alguien ha intentado algo así antes? No encontré nada relacionado con este tema.
utilizando el ID de objeto es OK es algunas circunstancias - por ejemplo, si los nuevos objetos businessEntity no serán siendo creado Además, es posible que solo pueda usar el código equals/hash predeterminado según cómo se maneje su sesión. – david