Я осуществивший дб, который состоял из статьи и плодовых таблиц, со следующими характеристиками:Mapping протяженных объектов с несколькими идентификаторов в Hibernate
create table Fruit
(
ART_ID bigint,
FRU_ID bigint not null auto_increment,
FRU_FROZEN varchar(15),
primary key(FRU_ID)
);
# Implemented
create table Article
(
ART_ID bigint,
ART_NAME varchar(10) not null,
ART_COST varchar(10) not null,
primary key(ART_ID)
);
альтером стол Фрукты добавить ограничение FK_FRUIT_ARTICLE внешнего ключ (ART_ID) ссылок Статья (ART_ID) по ограничению удаления ограничивает обновление;
и со следующими субъектами класса: Article.java
@Entity
@Table(name = "Article")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Article implements Serializable
{
@Id @GeneratedValue(strategy=GenerationType.AUTO)
@Basic(optional = false)
@Column(name = "ART_ID")
private Long id;
@Basic(optional = false)
@Column(name = "ART_NAME")
private String name;
@Basic(optional = true)
@Column(name = "ART_COST")
private String cost;
// конструкторы, методы получения и установки
Fruit.java
@Entity
@Table(name="Fruit")
public class Fruit extends Article{
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "FRU_ID")
private long fruitID;
@Basic(optional = false)
@Column(name = "FRU_FROZEN")
private String fruitFrozen;
// конструкторы, методы получения и установки
Теперь моя проблема заключается в том, как иметь ID в Ar ticle и в Fruit, если я сохраню его таким образом, это исключает, что подкласс не должен содержать IDClass, потому что это приведет к нескольким идентификаторам. Любая помощь приветствуется. Заранее спасибо.
Если я определяю @MappedSuperClass, это будет означать, что статья абстрактна, и я не хочу, чтобы это произошло. Почему я не могу иметь два идентификатора в одном объекте. Если я объявлю один экземпляр статьи, он получит ID1, и если я объявлю еще один экземпляр Fruit after, он получит ID2 и FRU_ID1. Почему так сложно разобраться? –
Потому что он оставляет findById неопределенным. Если у плода есть два идентификатора, который предполагается использовать для спящего режима, чтобы его найти? – Affe
Ну, а как же это первичный ключ? ART_ID в таблице Fruit - это всего лишь второстепенный ключ, который будет «связывать» свойства статьи с экземпляром Fruit. –