Hibernate插入或更新datetime mysql总是得到12:00:00或00:00:00

时间:2012-11-21 12:00:01

标签: java hibernate struts2

我是hibernate的新手

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

我的问题是

当我更新日期时间时,我的时间将是00:00:00或12:00:00,这与我选择的时间不一致04:50:10或18:20:11

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

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

我的转换代码

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;
    }

我的更新代码hibernate

//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();

1 个答案:

答案 0 :(得分:3)

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

From the JavaDocs

  

为了符合SQL DATE的定义,java.sql.Date实例包含的毫秒值必须通过将小时,分钟,秒和毫秒设置为零来“标准化” < / p>