Давайте забудем образец здесь (который может быть не лучшим). В Hibernate вы можете отобразить коллекцию базовых типов или встраиваемых объектов с помощью аннотации @CollectionOfElements
(и дополнительно @IndexColumn
для упорядоченных коллекций):
@Entity
public class Product {
@Id @GeneratedValue
private Long id;
@CollectionOfElements @IndexColumn(name="price_index")
private List<Integer> prices = new ArrayList<Integer>();
...
}
Семантически это близко к @OneToMany
, за исключением того, что элементы коллекции не являются сущностями, у них нет свойства id, а их жизненный цикл полностью зависит от объекта-владельца.
С точки зрения базы данных это приведет к таблице для продукта и к таблице цен:
create table Product (id bigint not null, primary key (id))
create table Product_prices (Product_id bigint not null, element integer, price_index integer not null, primary key (Product_id, price_index))
alter table Prodcut_prices add constraint FK9D26D06FB343359D foreign key (Product_id) references Product
В JPA 2.0 эта аннотация стандартизирована, поэтому предпочитайте новую аннотацию @ElementCollection
, если вы используете JPA 2.0.
С учетом вышесказанного, для конкретного случая Product and Price то, что @duffymo говорит, очень верно, и, вероятно, их не следует реализовывать с использованием упомянутых аннотаций.