【发布时间】:2014-03-27 17:22:54
【问题描述】:
我正在使用 spring 框架构建一个 REST API,并遇到了一个我似乎没有找到解决方案的不太有趣的案例。
假设我们有表 Table1,其中包含 Col1、Col2 和 Col3 列 我们有访问级别 1,2 和 3 的用户
访问级别 3 的用户是唯一允许访问 Col3 以及所有其他列的用户,其余用户可以访问其他任何内容。
此外,我希望 API 能够根据调用返回字段的子集,即:如果对 URL /table/list?fl=col1 进行了调用,则只会返回 Col1 的值.
我需要的是一种在 API 级别返回此特定数据子集的方法,显然 Spring Data JPA 不允许返回表的 动态 子集。
我想知道在不完全放弃 JPA 或不必重写所有实体中的所有函数的情况下,最简洁的方法是什么。
【问题讨论】:
-
我认为您要搜索的词是“查看”(en.wikipedia.org/wiki/View_(SQL))。
-
我不会尝试使用 JPA 来解决这个问题,而是使用一些 DTO(如果只有三个角色并且它非常固定)。我不明白“/table/list?fl=col1”之类的请求的实际原因。
-
DTO 听起来是一个非常有趣的想法,但它会限制添加更多角色,并且不会帮助限制响应中的列。您想要这样做的主要原因是利用网络流量,如果您只使用 3 列,则返回 10 列将毫无意义。
标签: java spring spring-mvc jpa