【发布时间】:2014-12-18 05:02:07
【问题描述】:
有一个用例我正在与 SDR 作斗争,如下所示 -
有用户表和 RefSecQuestion 表
User -> ManyTOOne -> RefSecQuestion , RefSecQuestion -> OneToMany -> User
有 User 表和 UserFriends 表
User -> OneToMany UserFriends , UserFriends -> ManyToOne -> User
有一个要求,当我去 /users/{id}/userFriends 时, 然后默认显示 UserProjection 中的 firstname , lastname 等
因此,我在 UserRepository 中启用了 excerptProjection,它工作正常。 我希望这里有大约 100 个结果,所以如果这个结果没有分页就可以了。
但是,现在由于 RefSecQuestion 也与 User 相关,所以当我去的时候会发生什么 /refSecQuestions -> 此页面挂起,因为它试图用 UserProjection 替换用户链接。对于大多数用户而言,RefSecQuestion 表偏向于一个问题,因此由于分页丢失而导致分页。
因为我不能在这里选择单向性,因为两个 url 都需要,即
/users/{id}/userFriends
/refSecQuestions/users
我找到的最接近的答案是选择单向性,即我在 RefSEcQuestion 中为用户将 Rest Export 设置为 false
【问题讨论】:
-
@zeroflagL,是的,我看到了 Oliver 的回应,但无法按照他所说的执行。你能在这里提供一些指导吗?我理解为 ExposeIdOnly 配置 SDR,此后不明白如何手动保持 URL 相同
-
我不太确定,但我认为“手动公开资源”是指编写 Spring MVC 控制器。
-
我正在使用 Spring Seccurity 我对其进行了配置,以便所有 /users/{id}/* URL 仅向使用 {id} 登录的用户公开。现在,由于这个分页不是开箱即用的,而且我现在要分别公开 /profile ,/userLanguages ,因此设计弹簧安全策略更加困难,因为 id 数量增加了..因此正在寻找使用 Spring Data 的解决方案JPA 技巧可以使用 Spring MVC 获得相同的结果
-
我也看过这里,似乎这里建议的是创建一个自定义查找方法,但是 URL 然后会发生变化,因为其中将包含 /search stackoverflow.com/questions/21469538/…
标签: spring-data spring-data-rest