2017-02-01 3 views
0

私はJavaで次の2つのエンティティクラスを持つSpring Data JPAプロジェクトセットアップを持っています。org.hibernate.MappingException - Scala多対多

@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] = _ 
} 

として、これら2つのエンティティクラスと私は欠けている何か例外

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

を取得しますか?代わりにパラメータでScalaのリストを使用して、パラメータAuthorではjava.util.Listを使用しての

+0

なぜたくさん使用するのかわかりません。どこに結合テーブルがありますか? –

+0

Javaバージョンでは、Javaスキーマクラス定義に基づいてDBスキーマが生成されます。 – vic

答えて

0

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

これは、エラーを修正する必要があります。

+0

まず、Springデータで使用されるすべてのデータ型は、Javaデータ型である必要がありますが、Scalaのものではありません。次に、Scala Listデータ型を使用しようとしましたが、コレクションフィールドはデータベースのブックテーブルの列として扱われますが、相互参照テーブルには含まれません。 – vic

関連する問題