我正在玩Spring Data examples。我已经定义了一个实体Parent,它有一组子实体关联。
@Entity
@Table
@Data
public class Parent {
@Id
@GeneratedValue
private Integer id;
@NotNull
private String name;
@Fetch(FetchMode.SUBSELECT)
@OneToMany(fetch = EAGER, cascade = {ALL}, orphanRemoval = true)
private Set<Child> childs;
}
@Entity
@Table
@Data
public class Item {
@Id
@GeneratedValue
private Integer id;
@NotNull
private String name;
}
和相应的存储库。我的问题是,当使用curl发布一个Parent
的新Child
时,我遇到了错误Could not read JSON document: Failed to convert from type [java.net.URI] to type
,也描述了here。该问题的答案表明之前需要发布子实体,然后使用返回的URL。这与Oliver Gierke在this answer中描述的过程相同。
有没有办法配置Spring Data来反序列化完整的子实体?
答案 0 :(得分:1)
如果您不导出Item
的存储库(通过使用@RepositoryRestResource(exported = false)
注释存储库),您将始终将该子序列化,并且您还可以为其提供POST
父节点。
但是Item
也不会有顶级REST API端点,也没有父级的关联资源。
你已经有cascade=ALL
关系 - 所以这种方法应该有用。