ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – Spring JPA存储库方法之间的查询名称

2019-06-22 07:06:04  阅读:248  来源: 互联网

标签:java spring spring-data spring-data-jpa jpql


我想获取更新日期或创建日期位于日期范围之间的记录.
实体类如下:

@Entity
public class Order {

  @Id
  @Setter(AccessLevel.NONE)
  private String orderId;

  @Temporal(TemporalType.TIMESTAMP)
  @Column(name = "created_at", nullable = false)
  private Date created;

  @Temporal(TemporalType.TIMESTAMP)
  @Column(name = "updated_at", nullable = false)
  private Date updated;

}

它上面的存储库如下:

public interface OrderRepository
    extends PagingAndSortingRepository<Order, String>, QuerydslPredicateExecutor<Order> {
  public Page<Order> findByCreatedBetweenOrUpdatedBetween(Date startDate, Date endDate,
      Pageable pageRequest);
}

问题是当我使用它时,我得到以下错误:

Caused by: java.lang.IllegalArgumentException: No parameter available
for part updated BETWEEN (2): [IsBetween, Between] NEVER. at
org.springframework.util.Assert.isTrue(Assert.java:116) at
org.springframework.data.jpa.repository.query.ParameterMetadataProvider.next(ParameterMetadataProvider.java:123)
at
org.springframework.data.jpa.repository.query.JpaQueryCreator$PredicateBuilder.build(JpaQueryCreator.java:247)
at
org.springframework.data.jpa.repository.query.JpaQueryCreator.toPredicate(JpaQueryCreator.java:206)
at
org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:119)
at
org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:56)

解决方法:

您需要提供4个日期.

前两个用于创建之间,前两个用于更新之间:

public interface OrderRepository
    extends PagingAndSortingRepository<Order, String>, QuerydslPredicateExecutor<Order> {
  public Page<Order> findByCreatedBetweenOrUpdatedBetween(
           Date startDateCreated, Date endDateCreated
         , Date startDateUpdated, Date endDateUpdated
         , Pageable pageRequest);
}

标签:java,spring,spring-data,spring-data-jpa,jpql
来源: https://codeday.me/bug/20190622/1261336.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有