gpt4 book ai didi

java - 实体关系破坏 GET 请求 - Spring MVC

转载 作者:行者123 更新时间:2023-11-30 06:32:16 24 4
gpt4 key购买 nike

我最近在 Spring MVC 项目中的两个 @Entity 上添加了 @ManyToOne@OneToMany 关联。

@Entity
public class Book {

@ManyToOne
@JoinColumn(name = "book_id")
private BookCategory category;

}

@Entity
public class BookCategory{

@OneToMany(mappedBy = "category")
private List<Book> books;

}

@RequestMapping(value = "getAllBooks", produces = "application/json")
public @ResponseBody List<Book> getAllBooks(){
return bookRepo.findAll(); // Native Spring JPA method
}

在包含联接之前,我可以轻松填充图书的List(没有其 BookCategories),并将它们作为 JSON 响应发送到客户端。

但是,在包含联接后,我的异步请求失败,并且在 Chrome 中收到以下错误

SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>)

在 IE 上:

Unterminated string constant: {description: "...

在 Chrome 中我也看到了

Resource interpreted as Document but transferred with MIME type application/json:

请求本身运行良好,返回 200,响应看起来就像普通的 JSON 对象数组。有什么想法可能会发生这种情况吗?

谢谢!

最佳答案

可能的问题可能是无尽的 json。每本书都包含一个类别,每个类别包含相同的书,包含类别,包含相同的书和 soo

book: {
category: {
book: {
category: {
book: {
.. and so on

这样你的映射器就可以将你的对象转换为类似 json 的字符串

编辑:您可以使用 View 修复它。

创建BookView类和BookCategoryView

public class BookCategoryView {

// contains all nessesery fields: id, name ..
// contains getters and setters
// DOESN'T contain book field

}

public class BookView {
// contains all nessesery fields: id, name ..
// contains getters and setters

// here add List<BookCategoryView>
}

如果将实体对象转换为此 View 对象,则不会有无限的循环依赖关系,因此您可以忽略该错误

更多信息:通常此类对象称为 DTO(数据传输对象)。因此,如果您将它们命名为 BookDTOBookCategoryDTO,一切都会很清楚

关于java - 实体关系破坏 GET 请求 - Spring MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45861224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com