2016-04-30 51 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] 

我試圖創建RoadElements的對象列表(這是接口類Point和部分)。還有其他方法可以做到嗎?據我所知,我想這是爲這個類創建適當映射的唯一方法,並且有這些元素的列表。

@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應該是一類,具有@Entity註釋,具有唯一標識之間所有道路元素RoadElement的ID(節,點等)

剖面和點應該從延伸RoadElement,並且不應該有自己的ID,因爲它是從RoadElement繼承的。

+0

謝謝,它的工作! – Yurrili

相關問題