【发布时间】:2016-07-03 20:38:33
【问题描述】:
我正在使用 Spring Boot 开发一个相对较大的项目,总的来说我对它很满意,但我遇到了一些我认为不应该成为问题的问题。
-
首先,一对一的关系。令人沮丧的是它不能正常工作(至少在我看来)。
例如,我有两个实体,
User和UserProfile。他们有一对一的关系,但大多数时候我只需要User数据,但它会获取(无论我尝试什么,哦,天哪,我在每个帖子上尝试了 5 页谷歌的世界建议)。所以我的第一个问题是,有没有办法在 JPA 和 Spring 中延迟获取一对一的关系? (因为大部分帖子都是2-3年以上)。
-
我遇到的另一个问题是以“动态”方式构建 JSON 响应。我使用 Rails 做了一些事情,对
JBuilder甚至是to_json非常满意,这让我能够根据控制器和我目前的需求构建 json 响应。在 Spring 中,我看到了以下解决方案:
-
Jackson @JsonView(这并不能完全解决我的问题,因为响应不是静态的,并且不能将属性分配给多个视图(据我理解的概念)); - 在响应中设置我不想要的 null 属性(使用这个,但我太丑了,看起来像一个错误的演练);
- 或者像我在 Rails 上构建
.json.jbuilder一样构建HashMap(但这会扼杀我的表现,因为有时它与很多for建立 json 有关系,而且这看起来像一个丑陋的演练)。
-
我正在寻找某天可能会遇到其中一个问题的人的一些指示,因为它让我无法解决我认为不应该这么难的问题。
编辑 1
已经尝试在@OneToOne 注释上添加optional = false,以解决@snovelli 建议的OneToOne 关系的急切负载。示例:
@OneToOne(optional=false, fetch = FetchType.LAZY)
public UserProfile getUserProfile(){ ... }
【问题讨论】:
-
您的问题包含两个不相关的问题。您应该选择一个并将另一个提取到一个单独的问题中。无论如何,这是我添加了两个答案的第一个 SO 问题。 :)
-
我想过这个问题,但是我有一些像这样的问题,但没有人回答,所以我发布了这个问题,因为我知道我必须提供赏金才能得到答案,而我没有在赏金上没有太多的积分,我将两者放在一个问题中:(但至少我认为这是每个不是 Spring 和 JPA 的巫师的人都可能有的两个问题。
标签: java spring jpa spring-boot jackson