jpa使用註解生成表時無外鍵問題及解決
jpa註解生成表時無外鍵
剛入手springboot時,在使用jpa實體註解生成表無外鍵。是因為jpa不知道使用何種Dialect創建,默認沒有外鍵。
在配置文件加上
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
就好瞭。
使用jpa自動建表不生成外鍵情況
springboot項目搭配的jpa使用時候,有一對多的關系註解,那麼自動會生成外鍵。外鍵在有些時候,會導致代碼不能走通,我們不想要怎麼做。
@ManyToOne @JoinColumn(name="cid")
要使數據表中沒有外鍵關聯關系,註意兩點。
情況1
當兩邊都有關聯關系字段,1的這端利用@org.hibernate.annotations.ForeignKey(name = “none”),多的那端在JoinColumn中加上
foreignKey = @ForeignKey(name = “none”,value = ConstraintMode.NO_CONSTRAINT)
情況2
當隻有多的那端有關聯字段,一的那段沒有關聯字段或者關聯字段被@Transient所修飾,請在多的那端在JoinColumn中加上
foreignKey = @ForeignKey(name = “none”,value = ConstraintMode.NO_CONSTRAINT)
@ManyToOne @JoinColumn(name="cid",foreignKey = @ForeignKey(name = "none",value = ConstraintMode.NO_CONSTRAINT))
最後需要說明的是@org.hibernate.annotations.ForeignKey(name = “none”)這個註解被廢棄瞭,所以更新jar包的時候需要註意下。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- hibernate 配置數據庫方言的實現方法
- 解決springboot啟動失敗的問題('hibernate.dialect' not set)
- Java Hibernate中的持久化類和實體類關系
- jpa實體@ManyToOne @OneToMany無限遞歸方式
- Spring Data JPA 實體類中常用註解說明