Как правильно установить связь ManyToMany с Hibernate и Kotlin? (Получение BeanCreationException) - PullRequest
0 голосов
/ 13 января 2020

У меня есть следующий код, который выдает следующее исключение:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: project, for columns: [org.hibernate.mapping.Column(type)]

Я думаю, что я неправильно создаю отображение @ManyToMany. Вот основные рассматриваемые классы:

@Entity
class Project (

    @GeneratedValue
    @Id
    var id : UUID? = null,

    var owner: Int,

    @get:ManyToMany(mappedBy = "project", fetch = FetchType.EAGER)
    var type: MutableSet<Type> = mutableSetOf()

    )



Второй класс:

class Type(

    @GeneratedValue
    @Id
    var id: UUID? = null,

    var oldId: Int,

    var value: String,

    @get:ManyToMany(fetch = FetchType.EAGER)
    @get:JoinColumn(name = "project_id")
    var projects: MutableSet<Project> = mutableSetOf()
) 

Проект может иметь много типов, а тип может принадлежать многим проектам. Что вызывает исключение?

Ответы [ 2 ]

1 голос
/ 13 января 2020

В Project сущности,

@get:ManyToMany(mappedBy = "project", fetch = FetchType.EAGER)
    var type: MutableSet<Type> = mutableSetOf()

Здесь mappedBy имеет значение project,

, тогда как в Type сущности имя переменной равно projects,

Итак, если вы просто обновите Project поле типа сущности следующим образом:

 @get:ManyToMany(mappedBy = "projects", fetch = FetchType.EAGER)
        var type: MutableSet<Type> = mutableSetOf()

Это должно работать нормально. Надеюсь, это поможет.

0 голосов
/ 13 января 2020

Изменить

@get:ManyToMany
@get:JoinColumn

на

@ManyToMany
@JoinColumn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...