java - 在 Hibernate Criteria 中将日期转换为字符串

标签 java hibernate date criteria sql-like

是否可以执行检查 Date 实例的字符串表示的请求。例如

Restrictions.like("dateField", "%12%") 

检索日期,其中“dateField”是 java.util.Date 的实例 谢谢

最佳答案

我遇到了同样的问题,这是我所做的:

首先,我创建了自己的标准实现:

public class DateLikeExpression implements Criterion {

private static final long serialVersionUID = 1L;
private String propertyName;
private String value;

public DateLikeExpression(String propertyName, String value) {
    this.propertyName = propertyName;
    this.value = value;
}

public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
    String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName);
    if (columns.length != 1) {
        throw new HibernateException("Like may only be used with single-column properties");
    }
    return "to_char(" + columns[0] + ", 'DD/MM/YYYY HH24:MI') like ?";
}

public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
    return new TypedValue[] { new TypedValue(new org.hibernate.type.StringType(),
            MatchMode.START.toMatchString(value.toLowerCase()), EntityMode.POJO) };
}

}

然后,我只是在将标准放在一起时使用它:

criteria.add(new DateLikeExpression("dateColumnName", "26/11%"));

仅此而已。请注意,此实现区域设置相关的(在本例中为 pt_BR)并且适用于具有 to_char 函数的 postgresql。您可能需要稍微调整一下才能使用您的数据库引擎。

关于java - 在 Hibernate Criteria 中将日期转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7765559/

相关文章:

java - Hibernate 分页错误接近限制 - SQL Server

java - ClassCastExceptions 由于在 WebSphere 8.5.5 应用程序容器中升级到 hibernate 4.2.8

java - 如何识别实现未使用?

java - 如何使用java读取pdf文件?

java - 以可联合的顺序 hibernate ManyToMany

sql - 如何在 T-SQL 中标准化混合日期格式的列

java - JTable 中的 JSpinner(时间)

Java - 将包含整数和 double 的用户输入转换为数组

java - Hibernate - 学生评分系统。需要注释方面的帮助

php - MySQL - DATE_SUB() 和 DATE_SUB() 错误之间的搜索查询