我也看到过类似的问题,但答案没有帮助。所以,我得到这个错误:
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继承的。