1

我是冬眠新手

我用hibernate和struts2写了一个小应用程序

我的问题是

当我更新日期时间时,我的时间将是 00:00:00 或 12:00:00 它与我选择的时间不正确,例如 04:50:10 或 18:20:11

我尝试了很多次,但它直到不起作用

在我的表单中,我有一个字段是字符串,然后我将其转换为日期,然后使用休眠更新它

我的转换代码

public Date convertStringToDate(String str) {
        Date date = null;
        SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss a");
        try {
            date = formatter.parse(str);
        } catch (ParseException ex) {
            Logger.getLogger(NewsAdminAction.class.getName()).log(Level.SEVERE, null, ex);
        }
        return date;
    }

    public String convertDateToString(Date date) {
        SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss a");
        String str = formatter.format(date);
        return str;
    }

我的更新代码休眠

//create session begin transaction

    String sqlNoThumb = "UPDATE News set title = :title, info = :info, publicdate = :publicdate, active = :active, titleviet = :titleviet where idnews = :idnews";

    Query query = session.createQuery(sqlNoThumb);
                    query.setString("title", news.getTitle());
                    query.setString("info", news.getInfo());
                    query.setDate("publicdate", news.getPublicdate());
                    query.setInteger("active", news.getActive());
                    query.setString("titleviet", news.getTitleviet());
                    query.setInteger("idnews", news.getIdnews());
                    result = query.executeUpdate();
4

1 回答 1

3

您需要使用 a java.sql.Timestamp,而不是 ajava.sql.Date

从 JavaDocs

为了符合 SQL DATE 的定义,由 java.sql.Date 实例包装的毫秒值必须通过将小时、分钟、秒和毫秒设置为零来“规范化”

于 2012-11-21T12:25:45.233 回答