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

Jpa中自定義枚舉映射方式

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

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

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

使用默認的@Enumerated 注解實現(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)建一個用于映射的枚舉

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);
  }

}

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

//@Converter(autoApply=true) 設置了這個注解,在下面的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 注解,它有兩個屬性,一個是 converter,用于指定轉(zhuǎn)換器,另一個是 attributeName,用于指定要轉(zhuǎn)換的屬性名,如果轉(zhuǎn)換器設置了 autoApply,則可以省略這個注解。配置完之后,我們就可以在實體類中使用自定義的枚舉映射了。

總結

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

相關文章

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

    JAVA判斷空值方法原理解析

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

    Java中的時間日期API知識點總結

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

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

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

    詳解Mybatis的分頁插件

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

江达县| 河源市| 德化县| 商南县| 峨眉山市| 任丘市| 松潘县| 德阳市| 元谋县| 萝北县| 酒泉市| 南京市| 五莲县| 清水县| 伊金霍洛旗| 定日县| 遵化市| 洞头县| 长沙市| 雅安市| 罗平县| 西贡区| 新龙县| 兴山县| 北流市| 海盐县| 阿拉善右旗| 连城县| 上饶县| 肇源县| 乳源| 深圳市| 华安县| 台南县| 隆尧县| 毕节市| 兴业县| 鄂伦春自治旗| 岱山县| 龙州县| 瓦房店市|