Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用hql在MySql中设置datetime字段_Java_Mysql_Spring_Hibernate - Fatal编程技术网

Java 如何使用hql在MySql中设置datetime字段

Java 如何使用hql在MySql中设置datetime字段,java,mysql,spring,hibernate,Java,Mysql,Spring,Hibernate,我在MySql数据库中以YYYY-mm-dd hh:mm:ss格式插入日期时遇到了一个问题。 数据库中的字段类型为datetime 我试过: Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.set(Calendar.MINUTE, startMinute); calendar.set(Calendar.SECOND,01); Date startTime = calendar.g

我在MySql数据库中以YYYY-mm-dd hh:mm:ss格式插入日期时遇到了一个问题。 数据库中的字段类型为datetime

我试过:

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.MINUTE, startMinute);
calendar.set(Calendar.SECOND,01);
Date startTime = calendar.getTime();

String hqlUpdate = "update challenge set start_time = :startTime where challenge_id =  :id";
sessionFactory.getCurrentSession().createSQLQuery(hqlUpdate)
                                 .setDate("startTime", startTime)
                                 .setInteger("id", id).executeUpdate();

在这里,我特别尝试在将日期对象传递给hibernate之前使用SimpleDataFormat格式化它。检查这是否有效

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.MINUTE, startMinute);
calendar.set(Calendar.SECOND,01);
Date startTime = dateFormat.parse(dateFormat.format(calendar.getTime();));

String hqlUpdate = "update challenge set start_time = :startTime where challenge_id =  :id";
sessionFactory.getCurrentSession().createSQLQuery(hqlUpdate)
                             .setDate("startTime", startTime)
                             .setInteger("id", id).executeUpdate();

如果使用
setParameter()
而不是
setDate()

尝试使用以下方法,我会觉得很有用

.setTimestamp("startTime", startTime);

在您的实体-challange中,您是否使用了@Temporal private Date start_time;您得到的错误是什么?尝试添加一个try-catch块来捕获任何异常,以查找阻止您保存数据的问题是,我有@Temporal(javax.persistence.TemporalType.TIMESTAMP),而我没有得到任何异常,但在DB中,我只能确定hh:mm:ss的日期,为什么你们不接受答案?