étodo @equals () para classes com associação bidirecional

Estou tentando implementarequals método para classes JavaBook eChapter na minha aplicação.Book tem um conjunto deChapters, enquanto umChapter tem um @ associaBook. A associação bidirecional é mostrada abaixo:

class Book{
    private String isbn;
    private String name;
    private Date publishDate;
    private Set<Chapter> chapters;
    ...

    public boolean equals(Object o){
        if(o == this){
            return true;
        }
        if (!(o instanceof Book)){
            return false;
        }
        Book book = (Book)o;
        if( (this.isbn.equals(book.getIsbn()) ) && (this.name.equals(book.getName())) &&(this.publishDate.equals(book.getPublishDate())) &&(this.chapters.equals(book.getChapters())) ){
            return true;
        }else{
            return false;
        }

    }
}

Agora eu tentei implementarequals paraChapter:

public class Chapter {
    private String title;
    private Integer noOfPages;
    private Book book;
    ...

    public boolean equals(Object o){
         if(o == this){
            return true;
        }
        if (!(o instanceof Chapter)){
            return false;
        }
        Chapter ch = (Chapter)o;
        if((this.title.equals(book.getTitle())) && (this.noOfPages.intValue()== book.getNoOfPages().intValue())  ){
            return true;
        }else{
            return false;
        }
    }

}

Aqui, eu estou querendo saber se eu preciso comparar o campo do livro também. Isso não iniciaria um loop infinito? Qual é a maneira correta de implementar oequals método para essas associações bidirecionais?

questionAnswers(4)

yourAnswerToTheQuestion