記錄一個使用Spring?Data?JPA設(shè)置默認(rèn)值的問題
Spring Data JPA設(shè)置默認(rèn)值的問題
我有一個entity實體,其中里面有一個布爾類型的字段:
//entity table注解略 public class TableEntity { private Boolean b; public Boolean getB() { return b; } public void setB(Boolean b) { this.b= b; } }
然后現(xiàn)在是需要給這個布爾型變量設(shè)默認(rèn)值true
一開始經(jīng)過百度,寫法是這樣的
//entity table注解略 public class TableEntity { @Column(name = "b", columnDefinition = "bit default 1", nullable = false) private Boolean b; public Boolean getB() { return b; } public void setB(Boolean b) { this.b= b; } }
這個寫法其實應(yīng)該沒什么問題,當(dāng)時的數(shù)據(jù)庫是sql server,但是在換環(huán)境部署,切換到MySQL的時候出了問題,被懷疑是我這里寫的問題(其實我總感覺應(yīng)該沒什么關(guān)系)
于是改了第二版
//entity table注解略 public class TableEntity { @Column(name = "b", nullable = false) @org.hibernate.annotations.Type(type = "yes_no") private Boolean b = true; public Boolean getB() { return b; } public void setB(Boolean b) { this.b= b; } }
直接把私有屬性值賦值,這也是通過百度之后,有部分文章說的一種方法,至于type那個注解,就是把布爾型變量在數(shù)據(jù)庫中通過字符型變量來存儲,存儲"Y"或者"N"。
但是這個寫法,工程跑起來之后還是有問題的,存不上默認(rèn)值,等于白寫。
在大佬的指點下,有了第三種寫法
//entity table注解略 public class TableEntity { @Column(name = "b", nullable = false) @org.hibernate.annotations.Type(type = "yes_no") private Boolean b = true; public Boolean getB() { if(b==null) { return true; } return b; } public void setB(Boolean b) { if(b==null) { return; } this.b= b; } }
大概意思是,在JPA進(jìn)行保存的時候框架內(nèi)部會自己調(diào)用get/set方法來進(jìn)行屬性賦值和取值,所以直接在get/set方法進(jìn)行默認(rèn)值的賦值就可以了。
實際測試效果拔群。
Jpa設(shè)置默認(rèn)值約束
使用SpringDataJpa設(shè)置字段的默認(rèn)值約束的2種方式
1、修改建表時的列定義屬性
@Column(columnDefinition="INT DEFAULT '1'") private Integer status;
2、通過Hibernate(org.hibernate.annotations.ColumnDefault)
下提供的注解進(jìn)行設(shè)置默認(rèn)值
@ColumnDefault("1") private Integer status;
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java 通過發(fā)送json,post請求,返回json數(shù)據(jù)的方法
下面小編就為大家分享一篇java 通過發(fā)送json,post請求,返回json數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03使用Filter攔截器如何實現(xiàn)請求跨域轉(zhuǎn)發(fā)
這篇文章主要介紹了使用Filter攔截器如何實現(xiàn)請求跨域轉(zhuǎn)發(fā),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08SpringDataJpa:JpaRepository增刪改查操作
這篇文章主要介紹了SpringDataJpa:JpaRepository增刪改查操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08Java同步框架AbstractQueuedSynchronizer詳解
本篇文章主要介紹了Java同步框架AbstractQueuedSynchronizer詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10