Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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来格式化日期并将其作为日期对象返回_Java_Hibernate_Date - Fatal编程技术网

java来格式化日期并将其作为日期对象返回

java来格式化日期并将其作为日期对象返回,java,hibernate,date,Java,Hibernate,Date,我有一个pojo类,其中一个字段是date。在这里,我使用hibernate使用这些POJO将值插入数据库 我已为此属性设置了当前日期值,并将该值插入数据库。这里我需要以编程方式生成插入脚本。我已经这样做了,我正在控制台中打印insert语句。但在控制台中打印时,日期显示为2013年6月7日星期五04:49:07法案,插入语句为 INSERT INTO tables (dates)values('Fri Jun 07 04:49:07 ACT 2013'); 我不想像这样生成脚本,我需要它作为

我有一个pojo类,其中一个字段是date。在这里,我使用hibernate使用这些POJO将值插入数据库

我已为此属性设置了当前日期值,并将该值插入数据库。这里我需要以编程方式生成插入脚本。我已经这样做了,我正在控制台中打印insert语句。但在控制台中打印时,日期显示为2013年6月7日星期五04:49:07法案,插入语句为

INSERT INTO tables (dates)values('Fri Jun 07 04:49:07 ACT 2013');
我不想像这样生成脚本,我需要它作为

INSERT INTO tables (dates)values('2013-06-07');
我知道我们可以使用简单的日期格式化程序,但我需要这个作为日期来设置POJO值。因此,如果是字符串,则不会将其设置到对象中

我正在形成如下查询

    StringBuffer columnName = new StringBuffer();
    columnName.append("insert into Tables values ('"+obj.getdates()+"')");
在我使用logger之前,当时查询是形成的,我认为hibernate负责格式化的,因为在插入之后,查询形成为

INSERT INTO tables (dates)values('2013-06-07');
但是现在通过硬编码,它给出了上面的查询,因为日期值不正确,所以没有执行

有人能帮我吗。在hibernate的情况下,格式化是由hibernate完成的,还是在后端自动转换的


谢谢

将您的日期转换为java.sql.date

java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
System.out.println("utilDate:" + utilDate);
System.out.println("sqlDate:" + sqlDate);

为什么需要将日期插入为
字符串
?您的JDBC驱动程序应该能够将其作为
Date
插入。所以您实际上是使用JDBC插入数据,而不是Hibernate,对吗?如果是,请使用。如果使用Hibernate,那么只需创建实体的实例并将它们持久化。将SQL构建为串联字符串甚至StringBuffer/StringBuilder是非常糟糕的。您应该使用参数替换,或者在替换发生的位置放置“?”,或者使用带有替换标签的映射参数。在表中生成insert之前,我们需要生成sql insert语句。这是客户端的选择。他们要么通过hibernate使用已经完成的自动插入,要么在文件中生成sql脚本,然后手动使用这些脚本进行插入。虽然生成JDBC驱动程序并没有将其转换为格式化的日期