doInHibernate - это двусмысленность - PullRequest
0 голосов
/ 04 марта 2020

Я следовал этому учебнику , но мой метод 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)
    })
}

My IDE (и компилятор также) говорит:

Неоднозначность разрешения перегрузки. Все эти функции совпадают.

  • publi c final fun doInHibernate (factorySupplier: (() → SessionFactory!) !, функция: ((t: Session!) → (??? .. ???))!): (??? .. ???) определено в org.hibernate.testing.transaction.TransactionUtil
  • publi c final fun doInHibernate (factorySupplier: (() → SessionFactory!) !, function: ((t: Session!) → Unit)!): Модуль, определенный в org.hibernate.testing.transaction.TransactionUtil
  • publi c final fun doInHibernate (factorySupplier: ( () → SessionFactory!) !, функция: ((t: Session!) → Unit)!): Модуль, определенный в org.hibernate.testing.transaction.TransactionUtil

Я не очень знаком с анонимными классами (Java) и его заменами в Kotlin (lambdas, SAM), возможно, именно в этом проблема.

Я впервые использую метод doInHibernate, и трудно найти учебник для этого.

Я использую Springboot 2.2.4.RELEASE и Hibernate 5.4.12.Final.

1 Ответ

0 голосов
/ 20 марта 2020

Используйте Unit как универсальный c Тип

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)
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...