Java Hibernate标准API中两个属性之间的日期

Java Hibernate标准API中两个属性之间的日期,java,sql,hibernate,oracle11g,Java,Sql,Hibernate,Oracle11g,我正在尝试使用CriteriaAPI获取数据库中日期介于两个字段之间的记录。我需要构建一个如下所示的查询: select tran_date_bal from eod_acct_bal_table where acid = <MyAcid> and <BalanceDate> between eod_date and end_eod_date; 如何在坚持条件的同时生成查询?只接受值,所以恐怕您不能在这里使用它 您可以使用和生成等效查询: 另一种选择是使用: 您是否尝试

我正在尝试使用CriteriaAPI获取数据库中日期介于两个字段之间的记录。我需要构建一个如下所示的查询:

select tran_date_bal from eod_acct_bal_table where acid = <MyAcid> and <BalanceDate> between eod_date and end_eod_date;
如何在坚持条件的同时生成查询?

只接受值,所以恐怕您不能在这里使用它

您可以使用和生成等效查询:

另一种选择是使用:


您是否尝试过
(Restrictions.between(“yourDate”,DateBegin,DateEnd))
yourDate
不能作为
between
的第一个参数,因为这是在EOD\u ACCT\u BAL\u表中查找字段属性,
BalanceDate
是EOD\u ACCT\u BAL\u表中的字段属性,所以!否
BalanceDate
是Date类型的输入参数BalanceDate的可能重复项是日期类型的输入参数而不是字段。是的,看起来更好,抱歉,我以前从未在hibernate中使用过wilcards,BalanceDate如何分配给通配符?@ErrorNotFoundException此重载接受单个参数,您只需要将余额日期传递到一个方法中(代替注释)。我知道,我是在询问SqlRestriction。@ErrorNotFoundException是的,它接受余额日期(在示例调用中查找
/**余额日期**/
)作为参数值(
的值?
)。看见
private static double getEndOfDayBalanceAsAtDate(String foracid, Date BalanceDate) {
        double balance = 0;
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            Criteria cr = session.createCriteria(EodAcctBalTable.class);
            cr.add(Restrictions.eq("acid", getAcid(foracid)));
            cr.add(Restrictions.between());//****Stuck Here***********
            balance = (Double) cr.setProjection(Projections.property("tranDateBal")).uniqueResult();
            tx.commit();
        } catch (Exception asd) {
            log.debug(asd.getMessage());
            if (tx != null) {
                tx.rollback();
            }
        } finally {
            session.close();
        }
        return balance;
    }
cr.add(Restrictions.le("eod_date", /** balance date **/));
cr.add(Restrictions.ge("eod_date_end", /** balance date **/));
cr.add(Restrictions.sqlRestriction("? between eod_date and eod_date_end", /** balance date **/, StandardBasicTypes.DATE ));