Java 如何实现无递归的双向实体引用,下面的示例

Java 如何实现无递归的双向实体引用,下面的示例,java,hibernate,jpa,reference,entity,Java,Hibernate,Jpa,Reference,Entity,我有两个被引用的实体作者和书,在它们之间有引用many2one=>one2many,我在实现上有问题吗?在go to/authors中,我让所有作者都有自己的书,但在每本书中都有自己的作者(有自己的书),反之亦然 问题在一点上,我需要得到 /authors-所有没有书籍的作者 /author/{id}和他所有的书(书里面不需要作者) /books书内有作者的所有书籍(但书内不需要作者) /book/{id}有作者的书(里面没有他的书) 我会删除私人列表书来自作者,而是创建服务: public c

我有两个被引用的实体作者和书,在它们之间有引用many2one=>one2many,我在实现上有问题吗?在go to
/authors
中,我让所有作者都有自己的书,但在每本书中都有自己的作者(有自己的书),反之亦然

问题在一点上,我需要得到
/authors
-所有没有书籍的作者
/author/{id}
和他所有的书(书里面不需要作者)
/books
书内有作者的所有书籍(但书内不需要作者)
/book/{id}
有作者的书(里面没有他的书)


我会删除
私人列表书来自作者,而是创建服务:

public class BookService {
    public List<Book> getBooks(int authorId) {
        // look up the books by author_id
    }
}
公共类图书服务{
公共列表getBooks(int authorId){
//按作者编号查找书籍
}
}

就像人类作家不会一直随身携带他所有出版的书籍一样,Java作者也不应该随身携带。

看起来json序列化(可能是rest端点?)需要这个,你已经检查过post了吗?是的,但下面的答案是我最好的方法。我的建议是不要在单个类中混合实体和dto。使用显式映射,您可以得到您想要的任何东西,而不会产生副作用。更多细节请参见我的文章(俄语)
@Entity
@Table(name = "books")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Book{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "price")
    private double price;

    @Column(name = "title")
    private String title;

    @Column(name = "description")
    private String description;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "author_id")
    private Author author; ....

public class BookService {
    public List<Book> getBooks(int authorId) {
        // look up the books by author_id
    }
}