当前位置: 首页 > 知识库问答 >
问题:

如何实现org.hibernate。Scala会话

胡志
2023-03-14

“会话”接口有两个方法,在Scala中,由于类型擦除,它们被简化为具有相同的签名:

public ProcedureCall createStoredProcedureCall(String procedureName, Class... resultClasses)

public ProcedureCall createStoredProcedureCall(String procedureName, String... resultSetMappings)

试图实现它们会产生错误:

错误:双重定义:第199行的方法createstoredprocedurecall:(procedureName: String,resultset mappings:string *)org . hibernate . procedure . procedure call和方法createstoredprocedurecall:(procedurename:string,result classes:class[_])org . hibernate . procedure call在擦除后具有相同的类型:(procedurename:string,resultset mappings:seq)org . hibernate . procedure . procedure call重写def createstoredprocedurecall(procedurename:string,resultset mappings:string):string):

那么我该如何以既能编译又能工作的方式实现这个接口呢?

共有1个答案

葛炜
2023-03-14

正如serejja指出的,您可以用Java编写一个填充程序来为您完成翻译:

Java:

package jibernate;

import org.hibernate.procedure.ProcedureCall;
import org.hibernate.SharedSessionContract;

public abstract class Yava implements SharedSessionContract {

  public ProcedureCall createStoredProcedureCallC(String n, Class... xs) {
    return createStoredProcedureCall(n, xs);
  }

  public ProcedureCall createStoredProcedureCallS(String n, String... xs) {
    return createStoredProcedureCall(n, xs);
  }

}

如果你正在使用sbt,它可以存在于src/main/java/jibernate/Yava.java

Scala公司:

package whybernate

trait Mehssion extends jibernate.Yava {

  import org.hibernate.procedure.ProcedureCall

  def createStoredProcedureCall(n: String, h: Class[_], t: Class[_]*) =
    createStoredProcedureCallC(n, (h +: t):_*)

  def createStoredProcedureCall(n: String, h: String, t: String*) =
    createStoredProcedureCallS(n, (h +: t):_*)

}

您可以用相同的方式调用这些函数,利用这样一个事实,即您保证至少有一个所需的 vararg。

 类似资料:
  • 嗨,我是Scala的新手,想知道如何将一个简单的ListNode类从Java改写成Scala。 在java中,它如下所示,我可以创建一个head node head=new ListNode(0),然后设置head.next=new ListNode(1) 但是我发现在Scala中很难重写相同的逻辑,下面是ListNode的case类 当我试图实例化一个head节点,并实例化另一个新节点并设置he

  • 问题内容: 我想要的只是使用一些并发Set(看起来根本不存在)。Java用于实现该行为。我想在Scala中做类似的事情,所以我创建了Scala HashMap(或Java ConcurrentHashMap)实例,并尝试添加一些元组: 当然,由于Unit是抽象的也是最终的,因此这使编译过程崩溃了。 如何使这项工作?我应该使用/ 代替吗?我必须确保没有人插入任何值。 感谢帮助 问题答案: 您可以只使

  • 这个想法是两台不同的机器(在两个不同的NATs后面)连接到公共服务器。 他们试图与这样的公共服务器建立TCP连接...那么神奇的事情就可能发生在数据流的处理过程中!在此会话期间更改整个TCP/IP堆栈上的源和dest地址。 目标--将第三部分作为代理排除在进一步的交流之外...

  • 我正在努力使用Java Spring Hibernate,我正在尝试实现Oauth2,在通过@ManyToMany将表用户连接到角色时,我不断遇到错误。我已经阅读了所有关于我的问题的答案,无论我尝试什么,我仍然得到了一个组织。冬眠映射异常。 以下是我正在努力做的事情的全部细节。 数据库结构 角色。JAVA 使用者JAVA 依赖性 问题: org.springframework.beans.fact

  • 使用ScalaTest,我想替换测试用例中的函数实现。我的用例: 我想写一个单元测试,但我不希望此测试用例依赖于测试运行的实际年份。 在动态语言中,我经常使用一个可以替换函数实现以返回固定值的构造。 我希望我的测试用例更改始终返回2014,无论实际年份是什么。 我发现了几个模拟库(Mockito、ScalaMock等等),但它们都只能创建新的模拟对象。它们似乎都无法取代方法的实现。 有办法做到吗?