2016-04-30 16 views
1

私は同様の質問を見ましたが、回答は役に立ちませんでした。だから、私はこのエラーを取得:Hibernate - マッピングされていないクラスを対象とする@OneToManyまたは@ManyToManyの使用:com.podro.model.Journey.roadWay [com.podro.model.RoadElement]

Use of @OneToMany or @ManyToMany targeting an unmapped class: com.podro.model.Journey.roadWay[com.podro.model.RoadElement] 

私は(クラスPointとセクションのためのインタフェースである)RoadElementsのオブジェクトとリストを作成しようとしています。それを行うための他の方法がありますか?私が知っていることから、私は、このクラスのための適切なマッピングを作成し、この要素のリストを持つ唯一の方法だと思います。

@Entity 
@Table(name="Journey") 
public class Journey { 
    // Some other fields 
    @Column(name="road_way") 
    @ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY) 
    private List<RoadElement> roadWay; 
} 


@MappedSuperclass 
public interface RoadElement {} 

@Entity 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
@Table(name="Point") 
public class Point implements RoadElement{ 

    @Id 
    @Column(name="id") 
    @GeneratedValue(strategy= GenerationType.IDENTITY) 
    private int id; 

    private String name; 
    @Column(name="time_in_days") 
    private int timeInDays; 
    private Rate rating; 
} 

@Entity 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
@Table(name="Section") 
public class Section implements RoadElement{ 

    @Id 
    @Column(name="id") 
    @GeneratedValue(strategy= GenerationType.IDENTITY) 
    private int id; 

    @Column(name="section_name" , length=100) 
    private String sectionName; 

    @Column(name="time_in_days") 
    private int timeInDays; 

    @Column(name="kind_of_transport") 
    private Locomotion kindOfTransport; 

} 

ありがとうございました。私は非常に感謝しています!

答えて

1

関連付けはエンティティ間で行われます。 RoadElementは実体ではありません。それはインターフェイスです。

あなたは何をしようとしていないかもしれません。 Hibernateは、roadWayに含まれるエンティティのタイプを知る必要があります。

したがって、RoadElement一意全て道路要素(セクション、ポイント、等)間RoadElementを識別するIDを有する、@Entityで注釈クラスであるべきである

セクションとポイントから延びているべきですRoadElementから継承されているので、独自のIDを持つべきではありません。

+0

ありがとうございました! – Yurrili

関連する問題