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

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

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

检索日期为天12或月12或年12的日期,其中“ dateField”是java.util.Date的实例

回答:

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

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

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。您可能需要稍微调整一下才能使用数据库引擎。

以上是 在Hibernate Criteria中将日期转换为字符串 的全部内容, 来源链接: utcz.com/qa/418305.html

回到顶部