我使用:Hibernate的DDL錯誤@JoinTable主鍵與@OrderColumn
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.10.Final</version>
<scope>provided</scope>
</dependency>
,我有這樣的實體:
@Entity
public class Person extends Subject
{
...
@ManyToMany
@JoinTable(name = "PERSON_ACCOUNT", joinColumns = @JoinColumn(name = "PERSON_ID") , inverseJoinColumns = @JoinColumn(name = "ACCOUNT_ID"))
@OrderColumn(name = "PERSON_ORDER")
private List<Account> accountList = new ArrayList<>();
...
}
和Hibernate生成此SQL:
create table PERSON_ACCOUNT (PERSON_ID bigint not null, ACCOUNT_ID bigint not null, PERSON_ORDER integer not null, primary key (PERSON_ID, PERSON_ORDER)) ENGINE=InnoDB
但是,IMO,PK是不正確的。
PK應該是:
primary key (PERSON_ID, ACCOUNT_ID)
這是一個bug(EclipseLink的生成正確PK)?
有沒有辦法(或解決方法)讓Hibernate生成正確的PK?
請注意,我不想在我自己的上生成DDL。
感謝
爲什麼連接表*不包含訂單的PK?一個列表可以有一個元素的重複。 –
沒錯,但我不想重複PERSON_ID,ACCOUNT_ID。也許它應該是'主鍵(PERSON_ID,ACCOUNT_ID,PERSON_ORDER)'? –
或者我應該添加一個獨特的限制條件。 –