gpt4 book ai didi

spring-data - 嵌入式资源分页用例

转载 作者:行者123 更新时间:2023-12-04 03:02:37 24 4
gpt4 key购买 nike

有一个用例,我正在为 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

最佳答案

我终于能够得到我想要的结果,并在此处发布给所有 SDR 用户。我想在此 URL 中进行分页 - 用户 -> 一对多 -> UserLanguages

/users/{id}/userLanguages

现在使用默认的 SDR 配置,嵌入式资源不会被分页,因此我必须手动公开它们,解决方法如下,代码行仍然非常少 -

@RestController
public class MainController {

@RequestMapping(value = "/users/{id}/userLanguages", method = RequestMethod.GET)
@PreAuthorize("permitAll")
public ModelAndView findUserLanguages(@PathVariable Integer id) {
ModelAndView model = new ModelAndView("forward:/userLanguages/search/findByUserId?userId=" + id);
return model;
}

然后,在 UserLangRepository 中

public interface UserLanguageRepository extends BaseRepository<UserLanguage, Integer> {

Page<UserLanguage> findByUserId(@Param("userId") Integer userId, Pageable pageable);
}

此处名称 findByUserId 遵循 Spring Data Query Derivation 规则,其中 UserLanguage 中有 user 列,User 中有 id 列。然后对以下 URL 进行分页并具有其他选项以及排序、大小等。

http://localhost:8585/MYAPP/users/3/userLanguages

但是存在一个问题,下一个和上一个链接指向转发链接..

关于spring-data - 嵌入式资源分页用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27539550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com