gpt4 book ai didi

java - JPA AttributeConverter 比较?

转载 作者:行者123 更新时间:2023-12-02 12:56:23 25 4
gpt4 key购买 nike

我正在寻找一种简单的方法来查询格式为 YYYYMMDD 的字符串类型的数据库列。这可以通过 native 查询来完成,例如:

select * from TPRODUCT where to_date(ENDOFPRODUCTION, 'YYYYMMDD') > CURRENT_DATE;

但是有没有办法通过 AttributeConverter 实现这种比较

@NamedQuery(name = "product.filterByEOP", query =
"select p from Product p where p.eop > :currentDate")

最佳答案

好吧,事实证明你可以。如果其他人正在研究这个问题,请在检查后 the reference我最终得到:

public class DateConverter implements AttributeConverter<Date, String> {

private final String DATE_FORMAT = "YYYYMMDD";

@Override
public String convertToDatabaseColumn(Date date) {
return new SimpleDateFormat(DATE_FORMAT).format(date);
}

@Override
public Date convertToEntityAttribute(String dateString) {
Date converted = null;
try {
converted = new SimpleDateFormat(DATE_FORMAT).parse(dateString);
} catch (ParseException ex) {
}
return converted;
}
}

然后您可以在实体属性上使用它:

@Column(name = "ENDOFPRODUCTION")
@Convert(converter = DateConverter.class)
private Date eop;

并使用查询:

final TypedQuery<Product> query = this.entityManager.createNamedQuery("product.filterByEOP", Product.class);
query.setParameter("currentDate", new Date());
List<Product> models = query.getResultList();

关于java - JPA AttributeConverter 比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44410958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com