hibernate - doInHibernate 是模棱两可的
问题描述
我按照本教程进行操作,但我的 doInHibernate 方法不明确,我需要帮助来解决这个问题。
我的方法看起来完全一样:
@Test
fun createValidUser_saveUser_userSaved() {
doInHibernate(({this.sessionFactory() }), {session: Session ->
val expectedUser = User(
"test.user@email.com",
"testPASSWORD",
"testFirstName",
"testLastName")
session.persist(expectedUser)
val actualUser: User = session.find(User::class.java, expectedUser.id)
assertThat(actualUser).isEqualTo(expectedUser)
})
}
我的 IDE(和编译器)说:
重载分辨率歧义。所有这些功能都匹配。
- public final fun doInHibernate(factorySupplier: (() → SessionFactory!)!, function: ((t: Session!) → (???..???))!): (???..???)在 org.hibernate.testing.transaction.TransactionUtil 中定义
- public final fun doInHibernate(factorySupplier: (() → SessionFactory!)!, function: ((t: Session!) → Unit)!): Unit 定义在 org.hibernate.testing.transaction.TransactionUtil
- public final fun doInHibernate(factorySupplier: (() → SessionFactory!)!, function: ((t: Session!) → Unit)!): Unit 定义在 org.hibernate.testing.transaction.TransactionUtil
我对匿名类 (Java) 不是很熟悉,它是 Kotlin (lambdas, SAM) 中的替代品,可能这就是问题所在。
这是我第一次使用 doInHibernate 方法,很难找到教程。
我正在使用 Springboot 2.2.4.RELEASE 和 Hibernate 5.4.12.Final。
解决方案
用作Unit
通用类型
doInHibernate<Unit>(({this.sessionFactory() }), {session: Session ->
val expectedUser = User(
"test.user@email.com",
"testPASSWORD",
"testFirstName",
"testLastName")
session.persist(expectedUser)
val actualUser: User = session.find(User::class.java, expectedUser.id)
assertThat(actualUser).isEqualTo(expectedUser)
})
推荐阅读
- python - 在函数外使用函数中定义的变量
- performance - 从本地加载 JS 文件,而不是从 CDN
- javascript - 单击按钮后隐藏组件(登录)并显示其他组件
- assembly - 在 C64 汇编程序中保存和重用寄存器?
- c# - Unity Newtonsoft JSON Android Build MissingMethodException:找不到类型“System.ComponentModel.ReferenceConverter”的构造函数
- c# - 我们如何在 C# 中获取 Azure VM 的成本?
- tmux - 开始时自动拆分终端
- python - 3D np.array() 的 CDF 图
- python - 用熊猫选择前 n 列和后 n 列
- laravel - Laravel 权限使用