2017-10-07 12 views
0

私は、フィルムサービスのデータベースにテーブルのシステムを設計します。これまで私はこのように設計してきました。MappedByは未知のターゲットエンティティを参照します

@Entity 
@Table(name = "movies") 
@Data 
public class MovieEntity { 

    @Id 
    @Column(unique = true, updatable = false) 
    @GeneratedValue 
    private Long id; 

    @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL) 
    private Set<MovieDescription> description; 
} 

@Entity 
@Table(name = "movies_info") 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name = "type") 
public abstract class MovieInfo { 

    @Id 
    @Column(unique = true, updatable = false) 
    @GeneratedValue 
    private Long id; 

    @ManyToOne 
    public MovieEntity movie; 
} 

@Entity 
@DiscriminatorValue(value = EditType.Values.DESCRIPTION) 
public class MovieDescription extends MovieInfo { 

    private String description; 
    private String language; 
} 

コンパイルするとき、それは間違いMovieEnityマッピングに関連

Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: com.core.jpa.entity.MovieDescription.movie in com.core.jpa.entity.MovieEntity.description 

何かを私に送信しますが、私はそれがすべてに約あるかわかりません。

+0

あなたは、コードの最初のアプローチを使用していますか?そうでない場合は、データベーススキーマを提供してください –

答えて

0

マップするスーパークラスフィールドをターゲットにするtargetEntity属性を使用します。

@Entity 
@Table(name = "movies") 
@Data 
public class MovieEntity { 

    @Id 
    @Column(unique = true, updatable = false) 
    @GeneratedValue 
    private Long id; 

    @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL, targetEntity= MovieInfo.class) 
    private Set<MovieDescription> description; 
} 

もっと詳しく:one to many mapping to a property of superclass

関連する問題