Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据JPA-编写复杂的查询方法_Java_Spring_Hibernate_Spring Data Jpa - Fatal编程技术网

Java Spring数据JPA-编写复杂的查询方法

Java Spring数据JPA-编写复杂的查询方法,java,spring,hibernate,spring-data-jpa,Java,Spring,Hibernate,Spring Data Jpa,我正在使用:Spring数据存储库+Hibernate 我有一个表:Post,带有字段:User-userBoard和dateCreated 我有一个表:用户,字段为:列出朋友 对于这个问题,我必须指定参数: 用户用户 创建日期 可分页页面 我希望实现: 按用户下载所有帖子+按用户朋友列表上的所有帖子,然后帖子的日期要早于创建日期,将收集的项目从最早的日期排序到所有这些页面,当然是页面 我知道我可以在没有本机查询的情况下实现这一点,因此请就如何进行提供建议。我可以写一个简单的问题,但复杂的问

我正在使用:Spring数据存储库+Hibernate

我有一个表:
Post
,带有字段:
User-userBoard
dateCreated

我有一个表:
用户
,字段为:
列出朋友

对于这个问题,我必须指定参数:

  • 用户用户

  • 创建日期

  • 可分页页面

我希望实现:

按用户下载所有帖子+按用户朋友列表上的所有帖子,然后帖子的日期要早于创建日期,将收集的项目从最早的日期排序到所有这些页面,当然是页面

我知道我可以在没有本机查询的情况下实现这一点,因此请就如何进行提供建议。我可以写一个简单的问题,但复杂的问题不再存在于本机查询中。
感谢您的帮助

以下JPA查询将根据需要工作:

@Query("SELECT "
    + "  DISTINCT p "
    + "FROM "
    + "  Post p "
    + "INNER JOIN "
    + "  p.user.friends f "
    + "WHERE "
    + "  (p.user = ?1 OR f = ?1) "
    + "AND p.dateCreated < ?2")
Page<Post> findAllByUserOrFriendsAndDateCreated(User user
                                               , Date dateCreated
                                               , Pageable page);
可在Github上获得


无法使用方法名生成此查询,因为它需要将其中一个子句括在括号中,而Spring数据还不支持这一点。

考虑更改标题,因为您不想再创建本机查询。不要描述表/类,而是用映射发布源代码。如果您已经有了本机查询,也可以发布它。您当前的本机查询是什么?请澄清,您使用的是Spring数据JPA?你想写一个“查询方法”?请发布您的存储库(java类)。不要描述您的代码。张贴它。
findAllByUserOrFriendsAndDateCreated(user
                                    , date
                                    , new PageRequest(pageNumber
                                                      , pageSize
                                                      , new Sort("dateCreated"));