【发布时间】:2018-12-27 03:32:41
【问题描述】:
我有一个具有多对一关系的实体,当我使用 restTemplate.getForEntity() 时,嵌套实体的值包含在 content 字段中,同时添加了一个 content 数组覆盖它
@ManyToOne(fetch = FetchType.LAZY)
@RestResource(exported = false)
@JoinColumn(name = "namespace", nullable = false)
private Namespace namespace;
具有此关系的实体上的GET 返回以下输出正文
{
"id" : "some_containing_id",
"alertDefinition" : null,
"namespace" : {
"content" : {
"id" : "some_namespace_id",
"emailSenderName" : "some sender",
"emailSenderId" : "foo@bar.com",
"createdAt" : "2018-07-19T05:24:04.473Z",
"updatedAt" : "2018-07-19T05:24:04.473Z"
},
"content" : [ ],
"links" : [ ]
},
...
因此,命名空间正在序列化,其中包含 2 个内容字段,其中数组替换了包含值的内容对象
SpringBoot 2.0.3.RELEASE
命名空间.java
@Entity
@Table(name = "namespace"
, schema = "alert_notification"
)
public class Namespace implements java.io.Serializable {
public transient static final String
EMAIL_SENDER_NAME_DEFAULT = "some sender";
public transient static final String
EMAIL_SENDER_ID_DEFAULT = "foo@vbar.com";
@Id
@Column(name = "id", unique = true, nullable = false)
private String id;
@Builder.Default
@Column(name = "email_sender_name")
private String emailSenderName = EMAIL_SENDER_NAME_DEFAULT;
@Builder.Default
@Column(name = "email_sender_id")
private String emailSenderId = EMAIL_SENDER_ID_DEFAULT;
@CreationTimestamp
@Column(name = "created_at", nullable = false, updatable = false)
private OffsetDateTime createdAt;
@UpdateTimestamp
@Column(name = "updated_at", nullable = false)
private OffsetDateTime updatedAt;
}
【问题讨论】:
-
你的问题到底是什么?
-
这是个问题,为什么它会生成带有 2 个内容字段的 JSON 响应?这是无效的并且不能正常工作所以要清楚,因为这个我的响应实体的所有值都为 null
-
请张贴你的
Namespace-class的内容 -
更新了原帖,包括它
-
请提供一个真实的例子,例如在 github 上发布链接。否则没有任何意义,因为使用您发布的源无法复制任何内容。
标签: spring-boot spring-data-jpa spring-data-rest