我有两个实体:Apikey 和 Api。这些是使用连接表连接的:
CREATE TABLE ACTIVE_APIS(
API_ID INTEGER NOT NULL,
API_KEY_ID INTEGER NOT NULL,
CONSTRAINT PK_API_ID_API_KEY_ID PRIMARY KEY (API_ID, API_KEY_ID),
CONSTRAINT FK_API_ID FOREIGN KEY (API_ID) REFERENCES APIS (API_ID),
CONSTRAINT FK_API_KEY_ID FOREIGN KEY (API_KEY_ID) REFERENCES API_KEYS (API_KEY_ID)
);
这之间的行为差异是什么(在 Apikey.class 内部):
@ManyToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name="ACTIVE_APIS",
joinColumns={
@JoinColumn(name="API_KEY_ID", referencedColumnName="API_KEY_ID")
},
inverseJoinColumns={
@JoinColumn(name="API_ID", referencedColumnName="API_ID")
}
)
private List<Api> activeapis;
这(在 Api.class 内):
@ManyToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name="ACTIVE_APIS",
joinColumns={
@JoinColumn(name="API_ID", referencedColumnName="API_ID")
},
inverseJoinColumns={
@JoinColumn(name="API_KEY_ID", referencedColumnName="API_KEY_ID")
}
)
private List<Apikey> apikeys
我怀疑它与删除有关,但文档什么也没说:http://docs.oracle.com/javaee/7/api/javax/persistence/JoinTable.html#joinColumns()。