Hibernate-Listen-Falle: @IndexColumn

Gegeben sei eine Entity A mit einer One2Many-Beziehung zu z. B. History-Einträgen. Diese Beziehung ist geordnet, also eine Liste.

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@IndexColumn(name = „position“)
@JoinTable(name=“T_A2HISTORY“)
protected List<HistoryDO> getHistory() {

Vergisst man @IndexColumn, so kann es sein wie unter HSQL-DB, dass alles funktioniert z. B. in einem Unit-Test. Unter Oracle hingegen erhält man mitunter den eigentlich einzigen Eintrag in der History-Tabelle mehrfach, je nach (Join)-Fetch-Strategie.

Auch sollte die IndexColumn wie üblich keine Schlüsselwörter von den Zieldatenbanken enthalten und auch keine gemappte Property betreffen. (Ich hatte da zumindest sonst Schwierigkeiten.)