2016-04-30 76 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