1. 程式人生 > >【踩坑】聯合主鍵情況下,JPA非主鍵設定自動增長無效

【踩坑】聯合主鍵情況下,JPA非主鍵設定自動增長無效

開發十年,就只剩下這套架構體系了! >>>   

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