mysql binary jpa 主键,JPA:@JoinTable-两列都是主键。如何停止该键?

This is my annotation I use to generate my Join Table.

@OneToMany(cascade = CascadeType.ALL)

@JoinTable(name = "service_operations",

joinColumns = { @JoinColumn(name = "serviceId") },

inverseJoinColumns = { @JoinColumn(name = "operationId") })

public Set getOperations() {

return operations;

}

Considering this is a OneToMany association, my natural assumption is that this table would generate a

[ Primary Key | Foreign Key ] table, however everytime I drop and re create the database it is not the case:

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)

Im a tad baffled by this. Any suggestions?

解决方案

I fixed my problem by adding the following changes:

I changed my @OneToMany to a @ManyToMany annotation

@ManyToMany(cascade = CascadeType.ALL)

@JoinTable(name = "workflow_services",

joinColumns = @JoinColumn(name = "workflow_id"),

inverseJoinColumns = @JoinColumn(name = "service_id"))

public Set getServices() {

return services;

}

I added a Set workflows; association in my Service object

@ManyToMany(mappedBy="services") // map info is in person class

public Set getWorkflows() {

return workflows;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值