我也看到过类似的问题,但答案没有帮助。所以,我得到这个错误:

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

我试图用RoadElements的对象创建List(这是类Point和Section的接口)。还有别的办法吗?据我所知,我想这是为这些类创建适当映射并拥有这些元素列表的唯一方法。
@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;

}

谢谢你的回答,我将非常感谢你的帮助!

最佳答案

关联在实体之间。RoadElement不是实体。它是一个接口。
你不能做你想做的事。Hibernate需要知道包含在roadWay中的实体的类型。
因此,RoadElement应该是一个类,用@Entity注释,它有一个ID,在所有的RoadElement(区段、点等)中唯一地标识RoadElement
节和点应该从RoadElement扩展,并且不应该有自己的ID,因为它是从RoadElement继承的。

09-16 07:13