Spring Data Rest HAL对我的数据模型不起作用我该如何解决?

问题描述

我的主要实体有> 10个查找值。

这些查找值有时具有与之关联的业务规则,其中一些是必填字段。

Fire:
  name: String
  fuelType: FuelTypeLookup (@ManyToOne)
  status: FireStatusLookup (@ManyToOne)
  type: FireTypeLookup     (@ManyToOne)
  size: Double
... etc ...

我们在验证程序中检查的一些业务规则:

  • 状态!=空
  • 类型为YYY时,
  • 状态不能为XXX
  • 尺寸> 1000时
  • 类型不能为ZZZ
  • 如果size> 0状态不能为XXX

对于可配置性,类型查找具有有效状态的集合,从而允许客户端应用程序创建动态相关的下拉列表

我们的控件中有2个客户端在内部使用此API,同时还有一个项目在系统之间以及两个第三方客户端之间同步数据。

我正在寻找一个易于理解的(自我描述的API)。

Spring Data Rest HAL中的难点:

  • 客户端应用程序使用自我链接作为其关键字定期更新其缓存的查找。查找的链接不是查找的规范链接,而是火的链接,这一事实使客户端无法在不遵循另一个链接(每次查找)的情况下合并值,从而使缓存的使用率降低。参见:canonical-links-with-spring-hateoashow-do-i-avoid-n1-queries-with-spring-data-rest
  • 客户端应用程序需要更多地了解模型的复杂性以及Spring的HATEOAS实现如何工作;击败HATEOAS承诺的自我描述的灵丹妙药
  • 输入您获取内容失败(有时无提示
  • 对@ManyToOne @RestResource(exported = false)字段进行配接会重新保存附加的查找,即使仅指定了查找ID也是如此。您应该如何将值更改为其他查找?
  • 投影可以部分解决这些问题,但会破坏PUT带来的后果,甚至更糟
  • 投影与在ResourceProcessor中手动添加规范链接结合使用时,只会显示非规范链接,而在没有投影的情况下都显示非规范链接

我不是唯一一个对Spring Data Rest和动态查找有疑问的人。我在做什么错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)