java - Spring Data JPA:如何从嵌套的一对一关系中获取数据?
问题描述
我相new
对于弹簧数据jpa
,但我一直orm
在typescript
世界范围内工作(typeorm/mikrorm)。我在 a和 a1-to-1
uni-directional
之间有一个简单的关系。Book
Picture
我的书实体
public class Book implements Serializable {
...
@JsonIgnore
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="picture_id", nullable = false)
private Picture picture;
}
图片实体
public class Picture implements Serializable {
....
@Id
private Long id;
@Column(nullable = false)
private String url;
}
所以我已经创建了我的服务,并且能够将数据保存到数据库中。对于我正在使用的数据库mysql
,它在我的本地机器上运行。
在我的控制器中,GetMapping
我想获得带有图片的书,例如,当我点击服务器时,http//:127.0.0.1/api/v1/books/book/1
我想获得以下响应:
邮差
{
"id": 4,
"title": "book1",
"picture":{
"id": 1,
"url": "url1"
}
}
相反,我收到以下回复:
{
"id": 4,
"title": "book1"
}
这是我尝试过的BookController.java
,它似乎不起作用,在某些时候我没有得到picture
这本书的对象。
@RestController
@RequestMapping(path = "/api/v1/books")
@RequiredArgsConstructor
public class BookController {
private final BookService bookService;
private final PictureService pictureService;
....
@GetMapping("/book/{bookId}")
public ResponseEntity<Book> getBook(@PathVariable("bookId") Long bookId){
return ResponseEntity.status(200).body(this.bookService.getBook(bookId));
}
}
解决方案
那是因为您告诉杰克逊忽略该属性。只需删除 @JsonIgnore 注释
推荐阅读
- python - 如何在 python 中仅对某些模型变量执行部分 F 测试
- angular - Angular 在组件中无法使用某些样式?
- javascript - discord bot帮助命令没有做任何事情
- mongodb - 使用 mongoDB 作为源时,AWS DMS 不会将 int 升级为 double
- javascript - 正则表达式允许 # 仅在字符串中的字符之间
- c# - Moq 和 xUnit 的单元测试失败 - InvalidOperationException
- reactjs - 如何“模仿”与 React Firebase 云的一对多关系?
- javascript - 碰撞检测html5画布
- stata - 从字符串响应中删除特定字符
- php - 在php中获取2个日期之间的信息