【发布时间】:2011-09-30 20:40:29
【问题描述】:
这是我用来生成联接表的注释。
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "service_operations",
joinColumns = { @JoinColumn(name = "serviceId") },
inverseJoinColumns = { @JoinColumn(name = "operationId") })
public Set<Operation> getOperations() {
return operations;
}
考虑到这是一个 OneToMany 关联,我自然的假设是这个表会生成一个
[ 主键 | Foreign Key ] 表,但是每次我删除并重新创建数据库时,情况并非如此:
mysql> describe workflow_services;
+-------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------+------+-----+---------+-------+
| workflow_id | bigint(20) | NO | PRI | NULL | |
| service_id | bigint(20) | NO | PRI | NULL | |
+-------------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
我对此有点困惑。有什么建议吗?
【问题讨论】:
-
Behrang 下面说的,加上:MySQL 的
describe不显示外键;但workflow_id和service_id绝对是各自桌子上的FK。此外,JPA 正确在此处的两列上定义了一个复合主键,即两列都是表 PK 的 一部分,并且每个列都是(的单个部分)a FK。
标签: jpa primary-key one-to-many jointable