2016-04-30 1 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 среди всех дорожных элементов (разделы, точки и т.д.)

секция и точка должны распространяться от RoadElement, и НЕ должен иметь свой собственный идентификатор, поскольку он унаследован от RoadElement.

+0

Спасибо, это сработало! – Yurrili

Смежные вопросы