如何将 SQLServerDataTable 对象传递给 JPA 本机查询

How to pass in SQLServerDataTable object to JPA native query

我正在尝试将 SQLServerDataTable 作为参数传递给 JPA 本机查询。

@Query(value = "Select u FROM #{#entityName} u with (nolock) INNER JOIN :listTable pt on pt.PhoneNumber = #{#entityName}.PhoneNumber WHERE EntityType = :entityType", nativeQuery = true)
Collection<Result> findAllByEntityList(@Param("listTable") SQLServerDataTable listTable, @Param("entityType") Integer entityType);

我得到以下异常:

  nested exception is org.hibernate.HibernateException: Could not determine a type for class: com.microsoft.sqlserver.jdbc.SQLServerDataTable

请问我该如何解决这个错误?

看起来 Spring JPA/Hibernate 当前实现尚不支持将 SQLServerDataTable 作为参数传入。

我通过在 JDBC 层执行实现来解决这个问题。

除了上面@Brian Antao 的回答之外,还有一些很好的 JDBC 实现代码

如果您想注入一个 Spring 数据源 bean,您可以阅读如何配置它 here

这将提供对数据源的轻松访问,如下所示:

SQLServerPreparedStatement statement = (SQLServerPreparedStatement) dataSource.getConnection().prepareStatement(ececStoredProc)