【问题标题】:Spring data jpa dynamic query not working for Date type parameterSpring数据jpa动态查询不适用于日期类型参数
【发布时间】:2017-06-23 14:55:35
【问题描述】:

我正在使用 Spring Data JPA,并且为了生成动态查询,我使用 Spring Data JPA 规范。它适用于类型 Date 旁边。我收到以下异常:

 Parameter value [2017-06-01] did not match expected type [java.time.LocalDate (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [2017-06-01] did not match expected type [java.time.LocalDate (n/a)]] 

但是我传入的参数值是 java.util.Date 类型。可能是什么原因?

这是我的实体:

private String name;

@Column(name = "user_id")
private Long userId;

@Column(name = "version_id")
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long versionId;

@Column(name = "created_date")
private LocalDate createdDate;

这里是

public ViewDetailSpecificationsBuilder createSearchSpecifications(ViewSearch view) {
    ViewDetailSpecificationsBuilder builder = new ViewDetailSpecificationsBuilder();
    if (StringUtils.isNotBlank(view.getName())) {
        builder.with("name", Operation.DEFAULT, view.getName());
    }       
    if (view.getStartDate() != null) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate date = LocalDate.parse(view.getStartDate(), formatter);
        builder.with("createdDate", Operation.GREATHERTHANEQUALTO, date);
    }
    if (view.getVersion() != null) {
        builder.with("version", Operation.DEFAULT, view.getVersion());
    }
    return builder;
}

这会引发以下异常:

org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [Thu%Jun%01%00:00:00%AMT%2017] did not match expected type [java.util.Date (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [Thu%Jun%01%00:00:00%AMT%2017] did not match expected type [java.util.Date (n/a)]

如果我格式化 startDate (formatter.format(startDate)) 它会抛出上述异常。

【问题讨论】:

  • 显示更多代码。特别是您传入值的位置

标签: postgresql spring-data-jpa


【解决方案1】:

不,您传递的是 Stringjava.sql.Date

【讨论】:

  • 我已将其更改为 java.time.LocalDate 但它也不起作用。
  • 确保是java.util.Date
猜你喜欢
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
  • 2016-05-16
  • 2019-08-13
  • 2018-05-31
  • 2020-05-26
相关资源
最近更新 更多