java - 只能比较日期数据类型的“分钟”组件的 hibernate 条件

原文 标签 java hibernate

我编写了一个Hibernate条件来过滤和显示具有特定时间输入的记录。

为此,我的数据库只有一条记录,其中日期时间部分为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;
}


}

最佳答案

我找到了答案。显然在我的sqldeveloper中,它指示该数据字段的格式为“ HH:MI”。因此,在Critera代码中,我应该改用以下代码:

字符串str =“ TO_CHAR(” +列[0] +“,'MI')=?”;

关于java - 只能比较日期数据类型的“分钟”组件的 hibernate 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18585373/

相关文章:

java - LOGCAT在运行我的应用程序时显示此错误

java - 在Windows XP上检查Java JVM内存限制

java - 服务器在序列化到GET时重写,但在服务器上 hibernate

java - 空指针异常 quartz 与 Spring 集成

java - 对应用引擎加入有什么解决方案?

java - 不完整的文件复制Java NIO

java - org.hibernate.PropertyAccessException : could not get a field value by reflection getter of

java - 之后我可以用 hibernate 替换JDBC逻辑吗

java - 这种递归方法有什么问题? (java)

hibernate - 如何从doWork()方法获得返回