我编写了一个休眠条件来过滤和显示具有特定时间输入的记录。
为此,我的数据库有一条记录,其中日期时间组件为 12:30。我已经写了一个 Hour('HH') 版本,我输入 (int 12) 一个小时并且它有效。
对 Minute 使用 (int 30) 标准不会返回数据库中的记录。事实上,无论我输入什么,它都不会返回。我在下面写的标准有问题吗?
public class MinEqCriteria implements Criterion {
private final String propertyName;
private final int min;
public MinEqCriteria(String propertyName, int min) {
this.propertyName = propertyName;
this.min = min;
}
@Override
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery)
throws HibernateException {
String[] columns = criteriaQuery.findColumns(propertyName, criteria);
if (columns.length!=1) {
throw new HibernateException("minEq may only be used with single-column properties");
}
String str = "TO_CHAR(" + columns[0] + ",'mm') = ?";
return str;
}
@Override
public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
return new TypedValue[] {new TypedValue(IntegerType.INSTANCE, min, EntityMode.POJO)};
}
@Override
public String toString() {
return "min(" + propertyName + ") = " + min;
}
}