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