java - 当实体具有带转换器的字段时,无法使用 JpaRepository 获取实体列表
问题描述
我有一个具有以下字段的实体:
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
private boolean isMale;
private int age;
@Convert(converter = DateToLongConverter.class)
private Long birthdate;
}
转换器:
@Converter
public class DateToLongConverter implements AttributeConverter<Long, Date> {
@Override
public Date convertToDatabaseColumn(Long attribute) {
return new Date(attribute);
}
@Override
public Long convertToEntityAttribute(Date dbData) {
return dbData.getTime();
}
}
规格:
public class PersonSpecification implements Specification<Person> {
@Override
public Predicate toPredicate(Root<Person> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
List<Predicate> predicates = new ArrayList<>();
predicates.add(builder.lessThan(root.get("birthdate"), new Date().getTime()));
return builder.and(predicates.toArray(new Predicate[0]));
}
}
当我使用我的接口扩展 JpaRepository 和 Specification 有条件的生日字段时,我得到一个 SQL 语法错误 - entityManager 发出一个没有引号的日期请求
SELECT person0_.id as id1_0_, person0_.age as age2_0_, person0_.birthdate as birthdat3_0_, person0_.is_male as is_male4_0_, person0_.name as name5_0_
FROM person person0_
WHERE person0_.birthdate<Wed May 12 20:28:28 MSK 2021
有没有办法修复查询创建或任何解决方法?
解决方案
推荐阅读
- javascript - Javascript Countdown Timer Based on User Input
- yocto - how to simplify recipe-sysroot-native
- dart - How to close Launcher web view in flutter/dart
- c - 可以用尾递归在C中制作一个加泰罗尼亚数字吗?
- pandas - 在 pandas 中,使用 str.split 删除数据时,如何跳过行?
- python - 为什么我在 pygame 混音器上听不到声音?
- protractor - 获取量角器测试中自定义状态更新的运行状态
- r - 如何使用逐步回归来删除 R 中逻辑回归中的特定系数?
- hadoop - 将文件解压缩为上传到 HDFS
- terminal - Shopify ThemeKit - Need Help Deploying a Folder