2017-02-01 7 views
0

У меня есть проект проекта Spring Data JPA со следующими двумя классами сущностей в Java.org.hibernate.MappingException - Scala Many-to-many

@Entity 
class Book { 

    ... 

    @Size(min = 1) 
    @ManyToMany 
    private List<Author> authors; 

    ... 
} 

@Entity 
class Author { 

    ... 

    @Size(min = 1) 
    @ManyToMany(mappedBy = "authors") 
    private List<Book> books; 

    ... 
} 

Они отлично работают.

Теперь я преобразовать проект в проект Scala и эти два класса сущностей как

@Entity 
case class Book private[example](..., 
           @BeanProperty @ManyToMany @Size(min = 1) authors: java.util.List[Author]){ 

    ... 
} 

@Entity 
case class Author private[example](...) { 

    ... 

    @BeanProperty 
    @Size(min = 1) 
    @ManyToMany(mappedBy = "authors") 
    var books: java.util.List[Book] = _ 
} 

И я получаю исключение

caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, at table: book, for columns: [org.hibernate.mapping.Column(authors)] 

Что не хватает?

+0

Не знаете, почему вы используете многие для многих. Где таблица соединений? –

+0

В версии Java схема БД создается на основе определения класса сущности Java. – vic

ответ

0

Вместо использования java.util.List с параметром Автор использовать список SCALA с параметром:

case class Book private[example](..., 
           @BeanProperty @ManyToMany @Size(min = 1) authors: List[Author]) 

Это должно исправить ошибку.

+0

Во-первых, на основе моего чтения все типы данных, используемые в Spring Data, должны быть типами данных Java, но не Scala. Во-вторых, я пытаюсь использовать тип данных Scala List, а поле коллекции рассматривается как столбец в книжной таблице базы данных, но не в перекрестной справочной таблице. – vic

Смежные вопросы