Java JPA StoredProcedureQuery从参数开始获取错误值
我在JPAJava JPA StoredProcedureQuery从参数开始获取错误值,java,mysql,jpa,stored-procedures,Java,Mysql,Jpa,Stored Procedures,我在JPAStoredProcedureRequesty中遇到问题,问题在于我得到了意外的不同值。在MySQL workbench中,我执行名为sp_GET_Result的存储过程,它正在等待两个名为startDate和endDate的参数 例如: 结果如下: 到目前为止还可以,但问题是当我从JavaJPA调用它时 这是我的java例程 我得到的结果是: 2017-01-31,2017-02-01,2017-02-02,2017-02-03,2017-02-04,2017-02-05,2
StoredProcedureRequesty
中遇到问题,问题在于我得到了意外的不同值。在MySQL workbench中,我执行名为sp_GET_Result
的存储过程,它正在等待两个名为startDate
和endDate
的参数
例如:
结果如下:
到目前为止还可以,但问题是当我从JavaJPA调用它时
这是我的java例程
我得到的结果是:
2017-01-31,2017-02-01,2017-02-02,2017-02-03,2017-02-04,2017-02-05,2017-02-06,2017-02-07,2017-02-08,2017-02-09,2017-02-10,2017-02-11,2017-02-12,2017-02-13,2017-02-14,2017-02-15,2017-02-16,2017-02-02-17,2017-02-18,2017-02-19,2017-02-02-20,2017-02-21,2017-02-22,2017-02-23,2017-02-02-26,2017-02-02>2017-02-27]
我认为问题不在于存储过程,而在于java发送的参数。
因为我试过打印Java发送和MySQL接收的参数,结果如下:
开始日期,结束日期
[2017-01-312017-02-27]但为什么?因为我从2017-02-01发送到2017-02-28
问题不在于存储过程,真正的问题在于结果的变化。很可能是您的JDBC驱动程序将输入日期转换为数据库使用的UTC格式。或者通过UTC格式,您的响应日期转换为本地时区。请检查JDBC驱动程序设置:。谢谢你的帮助!!!,你给了我找到真正问题的参考。问题是mysql所在的服务器。mysql有时区,服务器UTC和Java在CST中发送输入日期,因此mysql的响应是错误的。