【踩坑】聯合主鍵情況下,JPA非主鍵設定自動增長無效
阿新 • • 發佈:2019-04-09
1.問題
- order_info表裡面,採用product_id,order_id作為聯合主鍵,還有一個屬性id,想設定成自增長的非主鍵。如果在建表時sql語句里加上
key(id)
就可以解決。 - 但是,開發階段,使用spring.jpa.hibernate.ddl-auto=create 根據entity自動生成mysql表,發現下面的配置無效,生成的表id 是沒有auto_increment關鍵字的。
@IdClass(CommonPk.class) public class OrderInfo{ @Id @GeneratedValue(strategy= GenerationType.IDENTITY) @Column(name = "id") private Long id; private String productId; private String orderId; } //其中, class CommonPk implements Serializable{ private String productId; private String orderId; }
2.解決方法
- 也許不是最優解,但網上搜了一圈也沒有個解決方案,也許是沒找對地方,但自己想出了一個解決辦法
- 如下,@Column加個columnDefinition屬性
@Column(name = "id", columnDefinition = "bigint(20) not null UNIQUE key auto_incre