在SAP HANA + Hibernate中选择抛出错误:`不支持com.sap.db.jdbc.CallableStatementSapDBFinalize的方法解包

ps0*_*604 8 hibernate scala hana

我有下表:

CREATE column TABLE banks (
  sk tinyint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  code varchar(10) DEFAULT NULL,
  name varchar(100) DEFAULT NULL,
  version smallint DEFAULT NULL,
  PRIMARY KEY (sk)
);
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下代码选择表的行(在Scala中):

import scala.collection.JavaConverters._

object Test extends App {

    val session = HibernateUtil.sessionFactory.openSession        
    val q = session.createQuery("from BankHib ") 
    val list2 = q.list   // <-- code breaks here

    session.close
 }
Run Code Online (Sandbox Code Playgroud)

使用以下实体定义:

@Entity
@Table(name = "banks")
class BankHib {

    @Id
    var sk: Int = _

    var code: String = _
    var name: String = _
    var version: Int = _
}
Run Code Online (Sandbox Code Playgroud)

以及获取会话工厂的实用程序:

object HibernateUtil {

  val sessionFactory = buildSessionFactory

    def buildSessionFactory = {
        try {
                new Configuration().configure().buildSessionFactory();
        } catch {case ex:Throwable => 
            println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    def shutdown  {
        sessionFactory.close
    } 
}
Run Code Online (Sandbox Code Playgroud)

当我运行Test对象时,我得到以下异常:

Caused by: com.sap.db.jdbc.exceptions.SQLFeatureNotSupportedExceptionSapDB: Method unwrap of com.sap.db.jdbc.CallableStatementSapDBFinalize is not supported.
    at com.sap.db.jdbc.exceptions.SQLExceptionSapDB._createException(SQLExceptionSapDB.java:155)
    at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.generateSQLException(SQLExceptionSapDB.java:26)
    at com.sap.db.jdbc.WrapperDummy.unwrap(WrapperDummy.java:25)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:64)
    ... 26 more
Run Code Online (Sandbox Code Playgroud)

有什么问题以及如何解决?什么是不支持的功能?

war*_*gre 2

该异常是从最近修改的休眠代码开始的。

链接的问题是这个:https ://hibernate.atlassian.net/browse/HHH-10256

更改发生在 hibernate 5.2.8 上。因此,如果您使用的是 5.2.8+ 版本(显然您给出的错误指向 5.2.10 版本),您可以尝试降级到 5.2.7 吗?

我很担心,因为非常老的 sap 驱动程序似乎可以使用旧代码。如果较新的 hana 驱动程序与较新的代码存在问题,则很难找到 hibernate 版本和 sap 驱动程序版本之间的正确匹配。

如果 5.2.7 和 5.2.10 出现异常,则必须重新打开休眠问题。

而且您还获得 SAP 对 hana 的支持(如果您使用 hana,您已经为此付费),因此请联系他们以获得正确支持 JDBC 的更好驱动程序。他们甚至可能不会回答(你付钱给一个产品,并不是告诉他们有bug,bug总是在你这边)但谁知道呢。