我正在尝试制作一些休眠的东西并根据休眠注释自动创建 sql 脚本。这是我所拥有的:
安排班:
@Entity
@Table(name = ScheduleTableConsts.TABLE_NAME)
public class Schedule implements Serializable {
@Id
@Column(name = ScheduleTableConsts.ID_COLUMN)
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name = ScheduleSlotTableConsts.ID_COLUMN)
private List<ScheduleSlot> scheduleSlots;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name = LessonTableConsts.ID_COLUMN)
private List<Lesson> lessons;
Constructors, getters, setters...
ScheduleSlot 类:
@Entity
@Table(name = ScheduleSlotTableConsts.TABLE_NAME,
uniqueConstraints = {@UniqueConstraint(columnNames = {TimeSlotTableConsts.ID_COLUMN,
PlaceSlotTableConsts.ID_COLUMN})})
public class ScheduleSlot implements Serializable {
@Id
@Column(name = ScheduleSlotTableConsts.ID_COLUMN)
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@OneToOne
@JoinColumn(name = TimeSlotTableConsts.ID_COLUMN)
private TimeSlot timeSlot;
@OneToOne
@JoinColumn(name = PlaceSlotTableConsts.ID_COLUMN)
private PlaceSlot placeSlot;
Constructors, getters, setters...
上课班:
@Entity
@Table(name = LessonTableConsts.TABLE_NAME)
public class Lesson implements Serializable {
@Id
@Column(name = LessonTableConsts.ID_COLUMN)
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@OneToMany(fetch = FetchType.LAZY)
private Set<Professor> professors;
@OneToMany(fetch = FetchType.LAZY)
private Set<Course> courses;
@OneToMany(fetch = FetchType.LAZY)
private Set<Group> groups;
@Column(name = LessonTableConsts.LAB_COLUMN)
private boolean lab;
Constructors, getters, setters...
我想要实现的是让时间表知道它的插槽和课程,而不是让插槽和课程知道它们所属的时间表。上面的代码似乎没问题,但是当我尝试生成 sql 脚本(为此目的使用 maven 和 hibernate3-maven-plugin)并运行它时,会发生以下情况:
- 它创建一个没有指向 SCHEDULESLOT 或 LESSON 表的指针的 SCHEDULE 表;
- 它创建没有指向 SCHEDULE 表的指针的 SCHEDULESLOT 和 LESSON 表。
有人可以告诉我我做错了什么吗?
预先感谢!