如何将 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)
我正在尝试将 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)