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

Spring data jpa动态查询不适用于Date类型参数

湛宝
2023-03-14

我使用spring数据jpa,为了生成动态查询,我使用spring数据jpa规范。除了日期之外,它还能正常工作。我得到了以下例外:

 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)]

如果我格式化开始日期(formatter.format(开始日期))它抛出上述异常。

共有1个答案

慕容耘豪
2023-03-14

不,您传递的不是字符串,就是java。sql。日期

 类似资料:
  • 本文向大家介绍Dapper.NET 查询动态类型,包括了Dapper.NET 查询动态类型的使用技巧和注意事项,需要的朋友参考一下 示例 如果不使用泛型类型,也可以动态查询。            

  • 我试图在一个测试中模拟。我在网上找到了一些人们也这么做的例子。 一个例子来自sping-data-elasticsearch,另一个来自一些教程。 这是我自己的例子。 不幸的是,我看到了一些警告。以下是我得到的: 网络客户。RequestHeaderUrispec是原始类型。对泛型类型WebClient的引用。RequestHeaderUrispec应该参数化 当我更改代码并向添加通配符时,我会收

  • 列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。

  • 本文向大家介绍Dapper.NET 用动态参数查询,包括了Dapper.NET 用动态参数查询的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我正在用spring数据创建一个带有空日期检查的spel动态查询。我的疑问是: 当我使用有效日期运行此查询时,它可以工作,但当我传递空日期时,我会得到以下错误: 堆栈跟踪:

  • 问题内容: 您好,我想按查询排除某些字段。我正在使用nodejs 但在结果集中,我一直在获取密码字段。 问题答案: 投影不适用于新的nodejs mongodb驱动程序…相反,您将不得不在 此处使用游标方法