使用Spring Data REST实现更新深层嵌套JSON结构的最佳方法是什么?

时间:2017-12-06 12:21:00

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

我在后端(Spring Data REST)上有许多与导出的存储库相关的资源。 我的客户端使用GET加载“root”资源,然后通过“_links”属性加载相关资源。 然后客户端可以修改加载图中的一些资源。

我想实现服务,它会使json使用所有延迟加载的资源,并立即使用版本检查(乐观)更新修改后的资源。

实施此方法的最佳方法是什么? 这种方法是不好的做法吗?

2 个答案:

答案 0 :(得分:1)

我没有完全理解你的意思,但是如果你想在SDR中“热切地”加载嵌套资源,你可以关闭相关'嵌套'回购的导出(甚至完全删除它们)。例如:

@Entity
public class Parent {
   //...
   @OneToMany(cascaded = ALL, orphanRemoval = true)
   private Set<Child> children;
}

@Entity
public class Child {
   //...
}

@RepositoryRestResource
public interface ParentRepo extends JpaRepository<Parent, Long> {}

@RepositoryRestResource(exported = false)
public interface ChildRepo extends JpaRepository<Child, Long> {}

您还可以将cascade = ALL, orphanRemoval = true参数添加到OneToMany注释中。

然后所有子对象都将由Parent对象管理,公共有效负载将如下所示:

{
   "name": "parent1",
   "children": [
      {
         "name": "child1"
      },

      {
         "name": "child2"
      }
   ]
}

答案 1 :(得分:0)

听起来是graphql.com

的好地方

它允许在一个请求中获取所需的所有数据。您可以定义API并调用查询,仅请求必要的数据部分。

它也支持自定义更新。