How to specify a Primary Key on @ElementCollection
If you use a Set and make the element Column be not null, then hibernate will make a primary key with the join column and element column.
Example:
@Column(name = "STRINGS", nullable = false)
@ElementCollection
private Set<String> strings;
@ElementCollection
cannot take a primary key, because an Embeddable
types cannot have an identifier.
You can add an @OrderColumn
to optimize the generates SQL statements.
If you need a primary key, then you should turn the @ElementCollection
into a @OneToMany
association.