【发布时间】:2014-03-06 17:42:49
【问题描述】:
“Session”接口有两种方法,在 Scala 中,由于类型擦除,它们被简化为具有相同的签名:
public ProcedureCall createStoredProcedureCall(String procedureName, Class... resultClasses)
public ProcedureCall createStoredProcedureCall(String procedureName, String... resultSetMappings)
尝试实现它们会报错:
错误:双重定义: 方法 createStoredProcedureCall:(procedureName: String, resultSetMappings: String*)org.hibernate.procedure.ProcedureCall 和 方法 createStoredProcedureCall:(procedureName: String, resultClasses: Class[_])org.hibernate.procedure.ProcedureCall 在第 199 行 擦除后具有相同的类型: (procedureName: String, resultSetMappings: Seq)org.hibernate.procedure.ProcedureCall 覆盖 def createStoredProcedureCall(procedureName: String, resultSetMappings: String): ProcedureCall = null ^
那么我将如何以一种既能编译又能工作的方式来实现这个接口呢?
【问题讨论】:
-
放弃休眠并使用 SLICK? :)
-
@barnesjd 也许在未来的版本中。在不改变生产系统的技术堆栈的情况下,我还有很多事情要做。
-
另外,Slick 在项目启动时还没有进入生产版本,因此无法考虑。
-
哦,我明白了。如果它是一个生产系统,那绝对是一个不同的故事。 :) 很抱歉你必须经历这个,LOL
-
据我所知,目前您无法在 Scala 中实现这两种方法。这是与 Java 的互操作性问题。考虑在 Java 中实现接口并在 Scala 中使用它