【问题标题】:custom queries with Date input for LiferayLiferay 的带有日期输入的自定义查询
【发布时间】:2014-03-17 14:41:15
【问题描述】:

我在使用日期输入执行自定义查询时遇到问题。 这是我的sql:

<sql
     id="MyEntityFinder.findByIns">
 <![CDATA[
     SELECT {EX_MyEntity.*}
     FROM EX_MyEntity
     WHERE
         (EX_MyEntity.myDate >= ? AND EX_MyEntity.myDate <= ?)
         ]]>
</sql>

这是我的查找器 MyEntityFinderImpl:

public class MyEntityFinderImpl extends BasePersistenceImpl<MyEntity> implements MyEntityFinder{

    public static final String FIND_BY_INS = "MyEntityFinder.findByIns";
    public List<MyEntity> findByIns(Date from, Date to, int begin, int end) throws SystemException{
    Session session = null;
    try {
        session = openSession();
        String sql = CustomSQLUtil.get(FIND_BY_INS);
        SQLQuery q = session.createSQLQuery(sql);
        q.setCacheable(false);
        q.addEntity("EX_MyEntity", MyEntityImpl.class);
        QueryPos qPos = QueryPos.getInstance(q);  
        qPos.add("%"+from+"%");
        qPos.add("%"+to+"%");
        return (List<MyEntity>) QueryUtil.list(q, getDialect(), begin, end);
    } catch (Exception e) {
        throw new SystemException(e);
    } finally {
        closeSession(session);
    }
}    

}

这是我从我的 jsp 页面中调用它的方式:

Calendar aMonthAgo = Calendar.getInstance();
aMonthAgo.set(Calendar.MONTH, aMonthAgo.get(Calendar.MONTH) - 1);
Calendar now = Calendar.getInstance();
List<MyEntity> monthly = MyEntityLocalServiceUtil.findByIns( 
                    new java.sql.Date(aMonthAgo.getTimeInMillis()),
        new java.sql.Date(now.getTimeInMillis()), 0,
        MyEntityLocalServiceUtil.getMyEntitysCount());

我在尝试执行查询时收到“java.sql.SQLException: data exception: invalid datetime format”,但我不明白为什么。

【问题讨论】:

    标签: java sql database liferay


    【解决方案1】:

    试试这样的:

    在jsp中: Timestamp timestamp = new Timestamp(aMonthAgo.getTimeInMillis());

    在取景器中: qPos.add(timestamp);

    在 sql 查询中我也会使用 BETWEEN:

    WHERE DATE(EX_MyEntity.myDate) BETWEEN ? AND ?

    【讨论】:

    • 非常感谢您帮了我很多忙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    相关资源
    最近更新 更多