使用Spring Data

时间:2017-05-09 14:39:28

标签: java spring-data spring-data-rest

我正在玩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来反序列化完整的子实体?

1 个答案:

答案 0 :(得分:1)

如果您不导出Item的存储库(通过使用@RepositoryRestResource(exported = false)注释存储库),您将始终将该子序列化,并且您还可以为其提供POST父节点。

但是Item也不会有顶级REST API端点,也没有父级的关联资源。

你已经有cascade=ALL关系 - 所以这种方法应该有用。