最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Jpa中自定義枚舉映射方式

 更新時(shí)間:2025年10月16日 14:32:50   作者:空間神的禮贊  
本文介紹了JPA中枚舉映射的方式,默認(rèn)可用@Enumerated注解實(shí)現(xiàn)按名稱或序號(hào)映射;若需按枚舉屬性自定義映射,則可用@Convert注解結(jié)合枚舉轉(zhuǎn)換器靈活實(shí)現(xiàn)

Jpa 中默認(rèn)自帶了@Enumerated 注解,它默認(rèn)提供了兩種形式 String 和 ordinal,表示按照枚舉的名字和枚舉值的順序 ,但是有時(shí)候我們需要自定義枚舉映射,比如枚舉的值不是枚舉的名字,而是枚舉的某個(gè)屬性值。

這時(shí)候我們可以使用@Convert 注解來實(shí)現(xiàn)自定義枚舉映射。

使用默認(rèn)的@Enumerated 注解實(shí)現(xiàn)字段映射

@Entity
public class User{
  @Id
  private Integer userId;

  private String name;

  private Integer age;

  @Enumerated(STRING)
  private Status status;
}

public enum Status{
   ACTIVE,DELETED,BANED
}

使用自定義枚舉映射

創(chuàng)建一個(gè)用于映射的枚舉

public enum Status{
  ACTIVE(1),DELETED(0),BANED(-1);

  private final int value;

  public int getValue(){
    return this.value;
  }

  public static Status of(int value){
    for(Status status:Status.values()){
      if(status.getValue() == value){
        return status;
      }
    }
    throw new IllegalArgumentException("Invalid value: "+value);
  }

}

實(shí)現(xiàn)一個(gè)枚舉轉(zhuǎn)換器

//@Converter(autoApply=true) 設(shè)置了這個(gè)注解,在下面的Entity 的例子中就可以省略 @Convert
public class StatusConverter implements AttributeConverter<Status,Integer>{

  @Override
  public Integer convertToDatabaseColumn(Status attribute){
    return attribute.getValue();
  }

  @Override
  public Status convertToEntityAttribute(Integer dbData){
    return Status.of(dbData);
  }
}

使用@Convert 注解

@Entity
public class User{
  @Id
  private Integer userId;

  private String name;

  private Integer age;

  @Convert(converter = StatusConverter.class, attributeName = "status")
  private Status status;

}

在上面的例子中使用了@Convert 注解,它有兩個(gè)屬性,一個(gè)是 converter,用于指定轉(zhuǎn)換器,另一個(gè)是 attributeName,用于指定要轉(zhuǎn)換的屬性名,如果轉(zhuǎn)換器設(shè)置了 autoApply,則可以省略這個(gè)注解。配置完之后,我們就可以在實(shí)體類中使用自定義的枚舉映射了。

總結(jié)

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

相關(guān)文章

  • JAVA判斷空值方法原理解析

    JAVA判斷空值方法原理解析

    這篇文章主要介紹了JAVA判斷空值方法原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java中的時(shí)間日期API知識(shí)點(diǎn)總結(jié)

    Java中的時(shí)間日期API知識(shí)點(diǎn)總結(jié)

    本文給大家總結(jié)了Java中的時(shí)間日期API知識(shí)點(diǎn)以及相關(guān)的實(shí)例代碼分享,有興趣的朋友參考學(xué)習(xí)下。
    2018-04-04
  • 詳解Java 類的加載、連接和初始化

    詳解Java 類的加載、連接和初始化

    這篇文章主要介紹了Java 類的加載、連接和初始化的的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 詳解Mybatis的分頁插件

    詳解Mybatis的分頁插件

    這篇文章主要介紹了詳解Mybatis的分頁插件,在 Mybatis中,如何對(duì)數(shù)據(jù)進(jìn)行分頁是一個(gè)非常常見的問題,現(xiàn)在,我們可以通過使用 Mybatis 的分頁插件來實(shí)現(xiàn)對(duì)數(shù)據(jù)的分頁,需要的朋友可以參考下
    2023-05-05
  • Java三大最常用集合List、Set、Map用法詳解

    Java三大最常用集合List、Set、Map用法詳解

    在Java集合框架中,List、Set、Map是最核心的三大接口,它們分別對(duì)應(yīng)線性表、集合、鍵值對(duì)映射三種數(shù)據(jù)結(jié)構(gòu),各自有獨(dú)特的設(shè)計(jì)目標(biāo)和適用場(chǎng)景,這篇文章主要介紹了Java三大最常用集合List、Set、Map用法的相關(guān)資料,需要的朋友可以參考下
    2026-02-02
  • Java8新特性之默認(rèn)方法(default)淺析

    Java8新特性之默認(rèn)方法(default)淺析

    這篇文章主要介紹了Java8新特性之默認(rèn)方法(default)淺析,默認(rèn)方法也稱為虛擬擴(kuò)展方法或防護(hù)方法,可以讓我們修改接口而不破壞原來的實(shí)現(xiàn)類的結(jié)構(gòu),需要的朋友可以參考下
    2014-06-06
  • 使用sharding-jdbc實(shí)現(xiàn)水平分庫+水平分表的示例代碼

    使用sharding-jdbc實(shí)現(xiàn)水平分庫+水平分表的示例代碼

    本文主要介紹了使用sharding-jdbc實(shí)現(xiàn)水平分庫+水平分表,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • IDEA 2019.2.2配置Maven3.6.2打開Maven項(xiàng)目出現(xiàn) Unable to import Maven project的問題

    IDEA 2019.2.2配置Maven3.6.2打開Maven項(xiàng)目出現(xiàn) Unable to import Maven

    這篇文章主要介紹了IDEA 2019.2.2配置Maven3.6.2打開Maven項(xiàng)目出現(xiàn) Unable to import Maven project的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java使用okhttp3發(fā)送請(qǐng)求的實(shí)現(xiàn)示例

    Java使用okhttp3發(fā)送請(qǐng)求的實(shí)現(xiàn)示例

    OkHttp3是一個(gè)高效的HTTP客戶端,支持HTTP/2、GZIP壓縮、響應(yīng)緩存和異步/同步請(qǐng)求,本文就來介紹一下Java使用okhttp3發(fā)送請(qǐng)求的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2025-12-12
  • IntelliJ IDEA窗口組件具體操作方法

    IntelliJ IDEA窗口組件具體操作方法

    IDEA剛接觸不久,各種常用工具窗口找不到,不小心關(guān)掉不知道從哪里打開,今天小編給大家分享這個(gè)問題的解決方法,感興趣的朋友一起看看吧
    2021-09-09

最新評(píng)論

温泉县| 太和县| 休宁县| 和龙市| 崇礼县| 佛学| 乐东| 旬阳县| 齐河县| 探索| 睢宁县| 海城市| 夏邑县| 文成县| 东明县| 康乐县| 晋州市| 阿拉善右旗| 汉川市| 镇平县| 陇西县| 大荔县| 进贤县| 岳普湖县| 孟津县| 宜城市| 怀远县| 宁南县| 朝阳市| 肥乡县| 岗巴县| 廊坊市| 汽车| 湖北省| 栾川县| 华坪县| 芷江| 西林县| 平舆县| 额敏县| 武清区|