Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.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 Joda Time-Hibernate插入昨天';将日期输入数据库_Java_Mysql_Spring_Hibernate_Jodatime - Fatal编程技术网

Java Joda Time-Hibernate插入昨天';将日期输入数据库

Java Joda Time-Hibernate插入昨天';将日期输入数据库,java,mysql,spring,hibernate,jodatime,Java,Mysql,Spring,Hibernate,Jodatime,我现在有个奇怪的问题。当我将今天的日期插入数据库时,它被映射到昨天的日期,它发生在每个日期。例如,当我尝试插入2016-09-02时,数据库将其保存为2016-09-01。 以下是我的映射: @DateTimeFormat(pattern="dd/MM/yyyy") @Column(name = "OrderDate", nullable = false) @Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDate"

我现在有个奇怪的问题。当我将今天的日期插入数据库时,它被映射到昨天的日期,它发生在每个日期。例如,当我尝试插入2016-09-02时,数据库将其保存为2016-09-01。 以下是我的映射:

@DateTimeFormat(pattern="dd/MM/yyyy") 
@Column(name = "OrderDate", nullable = false)
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
private final LocalDate orderDate;
我通过
newlocaldate()创建实例
在console保存到数据库之前,我尝试在console上打印该值,并且该值打印正确,但数据库中的值是前一天的值:/
所以问题要么在于hibernate映射,要么在于mysql。
我使用以下方法将日期保存到数据库中:

   @Autowired
    private SessionFactory sessionFactory;
   public void persist(T entity) {
        getSession().persist(entity);
    }
我甚至不知道这是否是hibernate或mysql的问题。这真的很奇怪。你能给我点建议吗?有什么问题吗?提前谢谢 mysql im的版本使用:5.7.14-log

编辑:当我在mysql中手动插入数据时,如下所示:

insert into Orders values (149,14,'2016-09-03','2016-09-03',199.99)
日期保存正确

我的sql设置:

我启用了登录mysql,mysql处理的代码是:

2016-09-03T19:54:06.016215Z   125 Connect   root@localhost on ElectronicsStoreDB using TCP/IP
2016-09-03T19:54:06.017215Z   125 Query /* mysql-connector-java-6.0.3 ( Revision: 9fb85a76ccb7506157e668f1516464a46e317d4a ) */SELECT  @@session.auto_increment_increment AS auto_increment_increment, @@character_set_client AS character_set_client, @@character_set_connection AS character_set_connection, @@character_set_results AS character_set_results, @@character_set_server AS character_set_server, @@init_connect AS init_connect, @@interactive_timeout AS interactive_timeout, @@license AS license, @@lower_case_table_names AS lower_case_table_names, @@max_allowed_packet AS max_allowed_packet, @@net_buffer_length AS net_buffer_length, @@net_write_timeout AS net_write_timeout, @@query_cache_size AS query_cache_size, @@query_cache_type AS query_cache_type, @@sql_mode AS sql_mode, @@system_time_zone AS system_time_zone, @@time_zone AS time_zone, @@tx_isolation AS tx_isolation, @@wait_timeout AS wait_timeout
2016-09-03T19:54:06.018215Z   125 Query SET character_set_results = NULL
2016-09-03T19:54:06.018215Z   125 Query SET autocommit=1
2016-09-03T19:54:06.018215Z   125 Query SET autocommit=0
2016-09-03T19:54:06.021216Z   125 Query select product0_.ProductID as ProductI1_4_0_, product0_.Category as Category2_4_0_, product0_.Description as Descript3_4_0_, product0_.Discontinued as Disconti4_4_0_, product0_.Manufacturer as Manufact5_4_0_, product0_.Name as Name6_4_0_, product0_.UnitPrice as UnitPric7_4_0_, product0_.UnitsInStock as UnitsInS8_4_0_ from Products product0_ where product0_.ProductID=19
2016-09-03T19:54:06.045217Z   125 Query insert into Orders (CustomerID, OrderDate, ShippingDate, TotalPrice) values (14, '2016-09-02', '2016-09-02', 437.99)
2016-09-03T19:54:06.048217Z   125 Query insert into OrderDetails (OrderID, ProductID, Quantity, UnitPrice) values (163, 19, 1, 437.99)
2016-09-03T19:54:06.091220Z   125 Query update Products set Category='Printer', Description='USB 2.0, Wi-Fi', Discontinued=0, Manufacturer='EPSON', Name='XP-610', UnitPrice=437.99, UnitsInStock=134 where ProductID=19
2016-09-03T19:54:06.092220Z   125 Query commit
2016-09-03T19:54:06.094220Z   125 Query SET autocommit=1
2016-09-03T19:54:06.095220Z   125 Query select @@session.tx_read_only
2016-09-03T19:54:06.095220Z   125 Quit  
所以这是错误的日期

找到了类似的线程,但实际上没有帮助:
我使用的是jdbc.drivercassname=com.mysql.cj.jdbc.Driver 我将jdbc url更改为:

jdbc:mysql://localhost:3306/ElectronicsStoreDB?useUnicode=tr‌​ue&useJDBCCompliantT‌​imezoneShift=true&us‌​eLegacyDatetimeCode=‌​false&serverTimezone‌​=UTC


令人惊讶的是,它现在应该正常工作了

你的时区是什么?如果你在
UTC
的积极面上,那么
2016-09-02
的日期将是
2016-09-01
UTC+0
中。听起来卡亚曼好像在做什么。是否值得打开/配置Hibernate的日志输出以查看正在生成的SQL?我没有在任何地方设置时区,我的时区是UTC+01:00,但是,我的数据库jdbc url如下所示:jdbc:mysql://localhost:3306/ElectronicsStoreDB?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTCIt这不是我见过的第一个这样的问题(但我找不到合适的答案),但我敢跟你打赌,这和时区有关。我不熟悉你设置的MySQL选项,所以我不能马上告诉你这个问题。我用我的sql设置更新了帖子,希望有帮助:(
jdbc:mysql://localhost:3306/ElectronicsStoreDB?useTimezone=trueuseUnicode=true&useLegacyDatetimeCode=false&serverTimezone=Europe/Warsaw