当前位置: 首页 > 知识库问答 >
问题:

嵌入式资源分页的用例

薛枫
2023-03-14

下面是一个我正在与SDR斗争的用例-

这是用户表和参考问题表

User -> ManyTOOne -> RefSecQuestion , RefSecQuestion -> OneToMany -> User

这是用户表和用户好友表

User -> OneToMany UserFriends , UserFriends -> ManyToOne -> User

当我转到/users/{id}/userFriends时,默认情况下应该显示UserProjection中的firstname、lastname等

因此,我在UserRepository中启用了摘录投影,效果很好。我预计这里会有大约100个结果,所以如果这个结果没有分页的话就可以了。

但是,既然RefSecQuestion也与用户相关,那么当我转到/refSecQuestions时会发生什么呢-

因为我不能在这里选择单向性,因为两个url都是必需的,即

/users/{id}/userFriends
/refSecQuestions/users  

我找到的最接近的答案是选择单向性,即我将REFSECQUEST中的用户的Rest导出设置为false

共有1个答案

田巴英
2023-03-14

最后,我能够得到我想要的结果,并张贴在这里为所有SDR用户。我想在这个URL中进行分页-其中有一个用户-

/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

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

 类似资料:
  • 嵌入资源 嵌入资源即内容嵌入,可以为工程师提供诸如图片base64嵌入到css、js里,前端模板编译到js文件中,将js、css、html拆分成几个文件最后合并到一起的能力。有了这项能力,可以有效的减少http请求数,提升工程的可维护性。 fis不建议用户使用内容嵌入能力作为组件化拆分的手段,因为声明依赖能力会更适合组件化开发。 在html中嵌入资源 在html中可以嵌入其他文件内容或者base6

  • 我想使用REST API的HAL格式来包含嵌入式资源。我在API中使用Spring HATEOAS,Spring HATEOAS似乎支持嵌入式资源;但是,没有关于如何使用此功能的文档或示例。 有人能提供一个如何使用Spring HATEOAS包含嵌入式资源的例子吗?

  • 6.10 嵌入式资源 6.10.1 简介 在Web应用程序中,ABP提供了一个简单的方法来使用嵌入式的 Razor视图(.cshtml文件)和 其它资源(css,js,img等文件)。你可以使用该功能来创建包含UI功能的插件/模块。 6.10.2 创建嵌入式文件 首先,我们应该创建一个文件并且标记它为 嵌入式资源。任何程序集都可以包含嵌入式资源文件。至于如何标记它,这要看你的项目是什么格式的。 项

  • 当访问下面的URL时,我会得到相应的分页 但是,当访问以下URL时,Spring Data REST没有开箱即用的分页- UserRepository和UserPostRepository都是带有分页的JPA存储库。结果,第二个URL抛出GC开销超出错误,因为返回结果的行数非常大。 有没有办法用第二个URL进行分页?

  • 我正在使用HTTP采样器下载嵌入式资源。下面是来自Python.org的示例。我希望嵌入的资源的名称与实际的请求相匹配。但它们的名称与父示例相同。可能是HTTPS的产物吗?我使用的是JMeter5.3。

  • 资源嵌入 使用 go.rice server.go package main import ( "net/http" rice "github.com/GeertJohan/go.rice" "github.com/labstack/echo" ) func main() { e := echo.New() // the file server for ri