我看到了类似的问题,但答案没有帮助。所以,我得到了这个错误:
@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;
}
我正在尝试使用RoadElements对象创建List(这是Point和Section类的接口)。还有其他办法吗?据我所知,我想这是为这些类创建正确映射的唯一方法,并列出了这些元素。
public class MiClase {
private int a;
private Object b;
//Get and Set method
感谢您的回答,我将非常感谢您的帮助!
答案 0 :(得分:1)
实体之间的关联。 RoadElement
不是实体。它是一个界面。
你可能不会做你想做的事情。 Hibernate需要知道roadWay中包含的实体的类型。
因此,RoadElement应该是一个使用@Entity注释的类,具有唯一标识所有道路元素(部分,点等)中的RoadElement的ID
Section和Point应该从RoadElement扩展,并且不应该有自己的ID,因为它是从RoadElement继承的。