首页 > 解决方案 > 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(和编译器)说:

重载分辨率歧义。所有这些功能都匹配。

我对匿名类 (Java) 不是很熟悉,它是 Kotlin (lambdas, SAM) 中的替代品,可能这就是问题所在。

这是我第一次使用 doInHibernate 方法,很难找到教程。

我正在使用 Springboot 2.2.4.RELEASE 和 Hibernate 5.4.12.Final。

标签: hibernateunit-testingkotlin

解决方案


用作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)
    })

推荐阅读