无法使用 Teiid 在 SQL 服务器的 datetimeoffset 列中插入 null

Cannot insert null in datetimeoffset column in SQL Server using Teiid

我正在使用 Teiid 在 datetimeoffset 列中插入空值,但 PreparedStatement.setNull(index, Types.TIMESTAMP) 没有插入空值。我得到的错误是:

Caused by: java.sql.SQLException: Remote com.microsoft.sqlserver.jdbc.SQLServerException: Implicit conversion from data type varbinary to datetimeoffset is not allowed. Use the CONVERT function to run this query.

at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1632)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:600)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:522)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7225)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3053)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:247)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:222)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:471)
at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:537) at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:315) ... 27 common frames omitted

以下是 SQL Server 2012 版本的数据源详细信息:

<driver name="sqlserver" module="com.microsoft.sqlserver">
    <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
    <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
</driver>

驱动版本为:mssql-jdbc-8.2.0.jre8

我试过在没有 Teiid 的情况下插入 null(通过使用 Microsoft jdbc 驱动程序建立 sql 连接)并且它正在工作。 table 仅包含一个数据类型为 datetimeoffset 的列。

除此之外,请提出任何关于我可以尝试的想法。提前致谢!

这是一个 Teiid 问题:https://issues.redhat.com/browse/TEIID-5949

建议了对象类型映射的解决方法,但可能应该通过更新导入逻辑来解决。