Мои отображения приведены ниже.
Вот базовый класс для всех классов.Там нет таблицы для этого класса.Все идентификаторы пользователя подклассов в качестве их PK.
@MappedSuperclass
public abstract class Model {
private Long id;
@Id
@GeneratedValue(strategy=GenerationType.Sequence, generator="myGenerator")
public Long getId() { return id; }
}
Класс для комментариев, который имеет свою собственную таблицу, со столбцами для всех полей в Model
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
@Table(name = "COMMENT")
@SequenceGenerator(name="myGenerator", sequenceName="COMMENT_SEQ", allocationSize=1)
public class Comment extends Model {
//some data
}
Подкласс комментария, который такжеимеет собственную таблицу со столбцами для всех полей в Comment и Model
@Entity
@Table(name = "ORDER_COMMENT")
@SequenceGenerator(name="myGenerator", sequenceName="ORDER_COMMENT_SEQ", allocationSize=1)
public class OrderComment extends Model {
//some data
}
Этот класс имеет свою собственную таблицу и может иметь от одного до многих комментариев порядка.
@Entity
@Table(name="ORDER")
@SequenceGenerator(name="myGenerator", sequenceName="ORDER_SEQ", allocationSize=1)
public class Order extends Model {
private Set<OrderComment> = new HashSet<OrderComment>();
@OneToMany
@JoinColumn(name="ORDER_ID")
public Set<OrderComment> getComments() { return comments; }
}
Проблемав том, что когда я добавляю новый OrderComment в Order, Hibernate выбирает идентификатор из последовательности для Comment вместо последовательности для OrderComment.
Любые идеи о том, почему это происходит, и что я могу изменить, чтобы решить эту проблему?Или есть лучший способ отобразить это?