MySQL中的Orderby Timestamp列使用hibernate Criteria API引发错误

时间:2015-01-07 22:45:51

标签: java mysql hibernate

我正在使用hibernate从MySQL数据库中检索数据。

    @Transactional
    public List<PendingDomainEntity> listPendingDomain(int count, int offset)
            throws DaoException {
        try {
            Criteria listCriteria = sessionFactory.getCurrentSession().createCriteria(PendingDomainEntity.class);
            listCriteria.addOrder(Order.asc("domaincreateddt"));
            listCriteria.setMaxResults(count);
            listCriteria.setFirstResult(offset);
            Criterion domainstatus = Restrictions.eq("domainstatus", "Pending").ignoreCase();
            listCriteria.add(domainstatus);
            @SuppressWarnings("unchecked")
            List<PendingDomainEntity> pendingDomainList = (List<PendingDomainEntity>) listCriteria.list();
            LOGGER.debug("Regg-Service: The pending domain list is:={}", pendingDomainList);
            return pendingDomainList;
        } catch (Exception ex) {
            LOGGER.error("Exception: Service: Error while retrieving the pending domains list");
            throw new DaoException(ex.getMessage(), Response.Status.INTERNAL_SERVER_ERROR);
        }
    }

这是在PendingDomainEntity类

中声明domainCreatedDt的方式
@Column(name = "DOMAINCREATEDDT")
private Timestamp domainCreatedDt;

我收到以下异常消息

could not resolve property: domaincreateddt of: mypackage.DTO.PendingDomainEntity

但是当我为Order使用不同的列名时,它可以正常工作。按时间戳列对订单有任何限制吗?

1 个答案:

答案 0 :(得分:0)

查看本文档有关HQL 的章节(同样适用于Criteria API)

16.1. Case Sensitivity

  

除了Java类和属性的名称之外,查询不区分大小写。所以SeLeCT和sELEct一样和SELECT一样,但是org.hibernate.eg.FOO不是org.hibernate.eg.Foo,而foo.barSet不是foo.BARSET ....

这是JAVA名称:

private Timestamp domainCreatedDt;

这意味着, NOT 相同:

listCriteria.addOrder(Order.asc("domaincreateddt"));

只需 domainCreatedDt