Restful 资源并不总是与您的 jpa 实体具有一对一的映射关系。正如我所看到的,我试图弄清楚如何处理一些问题:
- 当资源具有由多个实体填充和保存的信息时。
- 当一个实体中包含更多您想要作为资源发送的信息时。我可以只使用杰克逊的
@JsonIgnore
,但我仍然会有问题 1、3 和 4。 - 当一个实体(如聚合根)具有嵌套实体并且您想要包含其嵌套实体的一部分但仅作为您的资源的某个嵌套级别时。
- 当您想要排除一个实体的一部分时,它是一个父实体的一部分,但当它的一部分是不同的父实体时排除一个单独的部分。
- Blasted 循环引用(我主要是使用 Jackson与JSOG
@JsonIdentityInfo
一起工作)
可能的解决方案: 我能想到的解决所有这些问题的唯一方法是创建一大堆“资源”类,这些类将具有构造函数,这些构造函数采用所需的实体来构造资源并为此放置必要的 getter 和 setter关于它的资源。这是矫枉过正吗?
为了解决 2、3、4 和 5,我可以对实际实体进行一些预处理和后处理,然后再将其发送给 Jackson 以将我的 pojo 序列化或反序列化为 JSON,但这并不能解决问题 1。
这些都是我认为其他人会遇到的问题,我很好奇其他人会提出什么解决方案。(我目前正在使用 JPA 2、Spring MVC、Jackson 和 Spring-Data,但对其他技术开放)