如何将java.util.Date映射到sys.datetime

如何将java.util.Date映射到sys.datetime,java,sql-server,datetime,jdbc,jasper-reports,Java,Sql Server,Datetime,Jdbc,Jasper Reports,我正在将我们的驱动程序升级到mssql-jdbc-6.2.1,以便我们可以使用SQL server 2016。除了我们的报告,新司机一切正常。我们有6000多个报告使用java.util.Date。对于以前的驱动程序,它们在SQL中被视为DATETIME,但新驱动程序将它们视为DATE。报告在“DATEADD(MINUTE,…”之类的代码上失败,因为DATE不支持该代码 我试过了 java.util.Map map = conn.getTypeMap(); map.put("sys.dateti

我正在将我们的驱动程序升级到mssql-jdbc-6.2.1,以便我们可以使用SQL server 2016。除了我们的报告,新司机一切正常。我们有6000多个报告使用
java.util.Date
。对于以前的驱动程序,它们在SQL中被视为
DATETIME
,但新驱动程序将它们视为
DATE
。报告在“DATEADD(MINUTE,…”之类的代码上失败,因为DATE不支持该代码

我试过了

java.util.Map map = conn.getTypeMap();
map.put("sys.datetime", java.util.Date.class);
conn.setTypeMap(map);
但是显然,MS驱动程序中没有实现
setTypeMap


重写所有报告不是一个选项。是否仍有覆盖此映射的方法?

您是在使用普通jdbc还是其他ORM?普通jdbc。我们将连接交给JasperFillManager。FillReport我不清楚jdbc驱动程序如何“解释”
java.util.Date
作为特定的SQL类型。当然,驱动程序可以将SQL Server类型映射到JDBC类型(例如,
DATETIME
->
java.SQL.Timestamp
)但是我不确定这对蟑螂合唱团的报告软件有什么作用。如果是这样的话,那就考虑把这个标签添加到这个问题上。它可能是蟑螂合唱团相关的。因为问题是从改变驱动程序开始的,我怀疑它。但是我不能复制O以外的测试应用程序中的错误。f Jasper。我们正在使用Jasper版本3.7.0,但我尝试了6.4.1并收到了相同的错误。这是Jasper报告问题。JRJdbcQueryExecuter.setStatementParameter将java.util.Date转换为java.sql.Date。我们以前能够解决这个问题,因为我们的旧驱动程序将java.sql.Date视为DateTime。