欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JPA之映射mysql text類型的問題

 更新時(shí)間:2021年10月15日 09:11:38   作者:Moshow鄭鍇  
這篇文章主要介紹了JPA之映射mysql text類型的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

JPA之映射mysql text類型

問題背景

jpa如果直接映射mysql的text/longtext/tinytext類型到String字段會(huì)報(bào)錯(cuò)。需要設(shè)置一下@Lob和@Column。

@Lob代表是長(zhǎng)字段類型,默認(rèn)的話,是longtext類型,所以需要下面這個(gè)屬性來指定對(duì)應(yīng)的類型。

columnDefinition="text"里面的類型可以隨意改,后面mysql可能會(huì)有新的類型,只要是對(duì)應(yīng)java的String類型,就可以在這里動(dòng)態(tài)配置。

解決方案

@Data
@Entity
@Table(name="question")
public class Question {
    @Id
    @GeneratedValue
    public int questionId;
    //....省略其他字段
    @Lob
    @Column(columnDefinition="text")
    public String explainStr;
    public Date createTime;
}

JPA各種類型映射處理

1.日期格式類型字段的映射,利用@Temporal(TemporalType.Date)進(jìn)行注解;例如:

private Date birthday;
@Temporal(TemporalType.DATE)
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}

2.枚舉類型的映射,利用@Enumerated,其參數(shù)EnumType表示指定存放在數(shù)據(jù)表中的形式,整型還是String;

首先創(chuàng)建一個(gè)枚舉:

public enum Gender
  {
Male,Female
}

在實(shí)體類中調(diào)用:

private Gender gender = Gender.Male;  // 為枚舉設(shè)置默認(rèn)值
@Enumerated(EnumType.STRING)
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}

3.大文本數(shù)據(jù)類型的映射,例如:網(wǎng)絡(luò)日志,字符串類型的長(zhǎng)度顯然不夠,利用@Lob注解,該注解用在字符串類型之上在數(shù)據(jù)庫生成LongText類型的數(shù)據(jù);例如:

private String diary;
@Lob
public String getDiary() {
return diary;
}
public void setDiary(String diary) {
this.diary = diary;
}

4.@Lob注解用在Byte[]數(shù)組類型,例如:保存一個(gè)文件可以用此類型,用在這個(gè)上面在數(shù)據(jù)庫中可以生成LongBolb數(shù)據(jù)類型;例如:

private Byte[] file;
@Lob
public Byte[] getFile() {
return file;
}
public void setFile(Byte[] file) {
this.file = file;
}

5.如果在實(shí)體類中不需要該字段與數(shù)據(jù)庫中的表進(jìn)行映射,但是默認(rèn)的情況下是將實(shí)體類的全部字段映射成數(shù)據(jù)表的列,那該怎樣做呢?利用@Transient注解,例如:

private String other;
@Transient
public String getOther() {
return other;
}
public void setOther(String other) {
this.other = other;
}

6.如果一個(gè)實(shí)體類中包含一個(gè)大數(shù)據(jù)類型的字段,如Byte[]類型,當(dāng)我們查詢?cè)搶?shí)體類時(shí)不得不查詢出該數(shù)據(jù)類型的字段,如果我們?cè)诓樵儠r(shí)只用到一個(gè)其它字段的數(shù)據(jù),但是默認(rèn)情況下是查詢?nèi)康?,那該怎樣避免查詢?cè)摯髷?shù)據(jù)類型的數(shù)據(jù)呢?利用@Basic注解進(jìn)行標(biāo)注,將fetch屬性值設(shè)置為L(zhǎng)azy即可,這樣只有在我們調(diào)用該屬性的get方法時(shí)才會(huì)進(jìn)行加載;

private Byte[] file;
@Lob @Basic(fetch=FetchType.LAZY)
public Byte[] getFile() {
return file;
}
public void setFile(Byte[] file) {
this.file = file;
}

7.@Column 該注解表示數(shù)據(jù)表的映射列,放在屬性的getter方法上:

  • .length:該屬性表示該映射列的長(zhǎng)度;
  • .nullable:該屬性表示該列是否可為空,true表示可為空,false表示不可為空;
  • .name:該屬性表示為該列起別名,不讓實(shí)體類的屬性名與數(shù)據(jù)庫的列名相同;

8.@Table 該注解表示映射的表;放在該實(shí)體類之上:

  • .name:該屬性表示為表起別名,讓實(shí)體類與數(shù)據(jù)表名不相同;

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實(shí)現(xiàn)遺傳算法實(shí)例分享(打印城市信息)

    java實(shí)現(xiàn)遺傳算法實(shí)例分享(打印城市信息)

    本文介紹java實(shí)現(xiàn)遺傳算法的實(shí)例,代碼中使用城市名做為數(shù)據(jù),可以打印當(dāng)前代數(shù)的所有城市序列,以及其相關(guān)的參數(shù),大家參考使用吧
    2014-01-01
  • Intellij idea使用Statistic統(tǒng)計(jì)代碼行數(shù)的方法

    Intellij idea使用Statistic統(tǒng)計(jì)代碼行數(shù)的方法

    這篇文章主要介紹了Intellij idea使用Statistic統(tǒng)計(jì)代碼行數(shù)的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Fluent Mybatis快速入門詳細(xì)教程

    Fluent Mybatis快速入門詳細(xì)教程

    由于FluentMybatis是基于mybatis上做封裝和擴(kuò)展的,所以這里主要聊聊mybatis處理的方式,以及給出FluentMybatis的解放方案。對(duì)Fluent Mybatis入門相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-08-08
  • java抓取網(wǎng)頁或文件中的郵箱號(hào)碼

    java抓取網(wǎng)頁或文件中的郵箱號(hào)碼

    這篇文章主要為大家詳細(xì)介紹了java如何抓取網(wǎng)頁或文件中的郵箱號(hào)碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 高并發(fā)系統(tǒng)的限流詳解及實(shí)現(xiàn)

    高并發(fā)系統(tǒng)的限流詳解及實(shí)現(xiàn)

    這篇文章主要介紹了高并發(fā)系統(tǒng)的限流詳解及實(shí)現(xiàn),內(nèi)容詳細(xì),小編覺得很不錯(cuò),這里分享給大家,供需要的朋友參考。隨小編一起看看吧。
    2017-11-11
  • java利用phantomjs進(jìn)行截圖實(shí)例教程

    java利用phantomjs進(jìn)行截圖實(shí)例教程

    PlantomJs是一個(gè)基于javascript的webkit內(nèi)核無頭瀏覽器 也就是沒有顯示界面的瀏覽器,你可以在基于 webkit 瀏覽器做的事情,它都能做到。下面這篇文章主要給大家介紹了關(guān)于java利用phantomjs進(jìn)行截圖的相關(guān)資料,需要的朋友可以參考下
    2018-10-10
  • SpringBoot如何使用ApplicationContext獲取bean對(duì)象

    SpringBoot如何使用ApplicationContext獲取bean對(duì)象

    這篇文章主要介紹了SpringBoot 如何使用ApplicationContext獲取bean對(duì)象,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Maven安裝過程圖文詳解

    Maven安裝過程圖文詳解

    這篇文章主要介紹了Maven安裝過程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-07-07
  • 看動(dòng)畫學(xué)算法之Java實(shí)現(xiàn)doublyLinkedList

    看動(dòng)畫學(xué)算法之Java實(shí)現(xiàn)doublyLinkedList

    這篇文章主要介紹Java實(shí)現(xiàn)doublyLinkedList,LinkedList:doublyLinkedList相對(duì)比較復(fù)雜,今天就來簡(jiǎn)單學(xué)習(xí)一下doublyLinkedList的基本操作和概,感興趣的小伙伴可以參考下面具體文章內(nèi)容
    2021-10-10
  • jxl操作excel寫入數(shù)據(jù)不覆蓋原有數(shù)據(jù)示例

    jxl操作excel寫入數(shù)據(jù)不覆蓋原有數(shù)據(jù)示例

    網(wǎng)上很多例子,都是用Jxl讀或者寫excel,本文實(shí)現(xiàn)的功能就是將數(shù)據(jù)源in.xls的第幾行第幾列數(shù)據(jù)寫入到out.xls的第幾行第幾列,不覆蓋out.xls其他原有的數(shù)據(jù)。
    2014-03-03

最新評(píng)論