Hibernate在List java上使用@ElementCollection

时间:2015-06-04 08:37:58

标签: hibernate hibernate-envers nhibernate-envers

我想在一组List类型上使用@ElementCollection,如下所示:

@ElementCollection
@CollectionTable(name = "MY_PRODUCT", joinColumns = @JoinColumn(name = "ID_PRODUCT"))
private List<MY_PRODUCT> products = new ArrayList<>();

之后,我看到Hibernate生成以下脚本sql:

CREATE TABLE HIST_MY_PRODUCT (
REV number(10,0) not null,
REVTYPE number(3,0) not null,
ID_PRODUCT number(19,0) not null,
PRICE number(10,0),
primary key (REV, REVTYPE, ID_PRODUCT)
);

如果我使用一组类型Set,就像这样:

@ElementCollection
@CollectionTable(name = "MY_PRODUCT", joinColumns = @JoinColumn(name = "ID_PRODUCT"))
private Set<MY_PRODUCT> products = new LinkedHashSet<>();

Hibernate生成以下脚本sql:

CREATE TABLE HIST_MY_PRODUCT (
REV number(10,0) not null,
REVTYPE number(3,0) not null,
ID_PRODUCT number(19,0) not null,
SETORDINAL number(10,0) not null,
PRICE number(10,0),
primary key (REV, REVTYPE, ID_PRODUCT, SETORDINAL)
);

所以,我看到了aditional field&#34; SETORDINAL&#34;仅适用于Set类型的集合,而不适用于类型List。

你能解释一下这个案子吗?我不会将所有列表字段更改为Set。

提前感谢您的回复。

0 个答案:

没有答案