В настоящее время у меня есть простое приложение, в котором свойства моего класса-контейнера отображаются на столбцы базы данных.
Сегодня ...
@Entity
class Container {
@Column
private BigDecimal propertyA;
@Column
private BigDecimal propertyB;
}
Я пытаюсь расширить свой дизайн, чтобы разрешить несколькозначения должны храниться вместе для каждого логического свойства.Теперь я хотел бы сохранить 5 значений для каждого свойства, чтобы представить их неопределенность (некоторые могут быть нулевыми)
На уровне схемы базы данных это можно представить так.Я не верю, что каждая неопределенность требует своего собственного идентификатора, поскольку комбинация (container_id, data_field) уникальна.
CREATE TABLE container (
id INT PRIMARY KEY,
...
);
CREATE TABLE uncertainty (
container_id bigint not null,
data_field varchar(100) not null,
maximum decimal null,
upside decimal null,
reference decimal null,
downside decimal null,
minimum decimal null,
primary key (container_id, data_field),
constraint fk_container_id foreign key (container_id) references container (id),
);
В таблице uncertainty
будет одна строка для каждого свойства в Container
, котороетребуется эта функциональность.
В приведенном выше примере в uncertainty
было бы две строки со значениями data_field
, равными propertyA
и propertyB
.
Что-то подобное было бы удобно ..
@Entity
class Container {
// How do I map multiple @OneToOne relationships to the uncertainty table based on e.g. the value of data_field = 'propertyA' or data_field = 'propertyB'
private Uncertainty propertyA;
private Uncertainty propertyB;
}
@Entity
class Uncertainty {
// Do I need fields here to represent the composite primary key (containerId, data_field)?
@Column
private BigDecimal maximum;
@Column
private BigDecimal upside;
@Column
private BigDecimal reference;
@Column
private BigDecimal downside;
@Column
private BigDecimal minimum;
}
Как лучше всего сопоставить эти отношения с JPA / Hibernate?
Большое спасибо.