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