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

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动态查询。我的疑问是: 当我使用有效日期运行此查询时,它可以工作,但当我传递空日期时,我会得到以下错误: 堆栈跟踪:

  • 我有以下类层次结构: 我正在尝试读取并锁定一个具体实例,以便其他事务无法读取它,使用hibernate。 现在的函数: 正在工作-为刷新操作生成“SELECT for UPDATE”语法。 refresh()和get()函数之间的不同之处在于get()函数使用外部左联接来选择具体对象,而refresh()使用内部联接来选择具体对象。 在悲观锁定的上下文中,这些连接之间有区别吗?