Hibernate / JPA equals () и hashCode () с ленивым загруженным бизнес-идентификатором

Мне интересно, как написать правильные equals () и hashCode () для объектов Hibernate, которые имеют отношение Lazy Loaded ManyToOne к другому объекту, который важен как бизнес-ключ. Обратите внимание, что я уже читал документацию по Hibernate по этой теме и знаю, что должен / не должен использовать идентификатор объекта.

Для пояснения, вот пример:

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

Конечно, это просто упрощенный пример. Но я надеюсь, что смогу объяснить свой сценарий. Кто-нибудь пробовал что-то подобное раньше? Я не нашел ничего по этой теме.

6
задан Dominik Obermaier 8 June 2011 в 21:06
поделиться