1. 程式人生 > >SpringBootJpa — @Id 和 @GeneratedValue 註解詳解

SpringBootJpa — @Id 和 @GeneratedValue 註解詳解

@Id 標註用於宣告一個實體類的屬性對映為資料庫的主鍵列。該屬性通常置於屬性宣告語句之前,可與宣告語句同行,也可寫在單獨行上。
@Id標註也可置於屬性的getter方法之前。

@GeneratedValue:
@GeneratedValue 用於標註主鍵的生成策略,通過strategy 屬性指定。預設情況下,JPA 自動選擇一個最適合底層資料庫的主鍵生成策略:SqlServer對應identity,MySQL 對應 auto increment。
在javax.persistence.GenerationType中定義了以下幾種可供選擇的策略:
–IDENTITY:採用資料庫ID自增長的方式來自增主鍵欄位,Oracle 不支援這種方式;
–AUTO: JPA自動選擇合適的策略,是預設選項;
–SEQUENCE:通過序列產生主鍵,通過@SequenceGenerator 註解指定序列名,MySql不支援這種方式
–TABLE:通過表產生主鍵,框架藉由表模擬序列產生主鍵,使用該策略可以使應用更易於資料庫移植。

推薦的兩種寫法:
屬性之上:

@Table(name="CUSTOMERS")
@Entity
public classCustomer {
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Id
    private Integer id;
    private String name;
    private String email;
    private int age;

    public Integer getId() {
        return id;
    }
    public void setId
(Integer id) { this.id = id; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

getter方法之上:

@Table(name="CUSTOMERS")
@Entity
public classCustomer {
    private Integer id;
    private String name;
    private String email;
    private int age;

    @GeneratedValue(strategy=GenerationType.AUTO)
    @Id
    public
Integer getId() { return id; } public void setId(Integer id) { this.id = id; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

但是不能某個註解在屬性之上,某個註解在getter之上,將丟擲異常,對其他註解也相同

@Table(name="CUSTOMERS")
@Entity
public classCustomer {
    @Id
    private Integer id;
    private String name;
    private String email;
    private int age;

    @GeneratedValue(strategy=GenerationType.AUTO)
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

上面的寫法是錯誤的




相關推薦

SpringBootJpa — @Id @GeneratedValue 註解

@Id 標註用於宣告一個實體類的屬性對映為資料庫的主鍵列。該屬性通常置於屬性宣告語句之前,可與宣告語句同行,也可寫在單獨行上。 @Id標註也可置於屬性的getter方法之前。 @GeneratedValue: @GeneratedValue 用於標註主鍵

JPA @Id @GeneratedValue 註解

@Id:  @Id 標註用於宣告一個實體類的屬性對映為資料庫的主鍵列該屬性通常置於屬性宣告語句之前,可與宣告語句同行,也可寫在單獨行上。  @Id標註也可置於屬性的getter方法之前。 @GeneratedValue: @GeneratedValue 

@GeneratedValue 註解

springboot中@GeneratedValue作用: (1)、@GeneratedValue註解存在的意義主要就是為一個實體生成一個唯一標識的主鍵、@GeneratedValue提供了主鍵的生成策略。 (2)、@GeneratedValue註解有兩個屬性,分別是strategy和g

@ImportResource@Bean註解,超詳細

@ImportResource:匯入Spring的配置檔案,讓配置檔案裡面的內容生效; Spring Boot裡面沒有Spring的配置檔案,我們自己編寫的配置檔案,也不能自動識別; 想讓Spr

Spring IOCDI中及其註解

一.IOC和DI   1.IoC:指將物件的建立權,反轉給了Spring容器;    不是什麼技術,而是一種設計思想,好比於MVC。就是將原本在程式中手動建立物件的控制權,交由Spring框架來管理。 正控:若呼叫者需要使用某個物件,其自身就得負責該物件的建立。 反控:呼叫者

SSM框架----Spring MVC理解主要使用的註解

核心原理 1、       使用者傳送請求給伺服器。url:user 2、       伺服器收到請求。發現Dispatchservlet可以處理。於是呼叫DispatchServlet。 3、       DispatchServlet內部,通過HandleMapping

SpringMvc三層架構註解@Controller、@Service@Repository

1. @Controller控制層 2. @Service() 3. @Repository持久層 springvmc採用經典的三層分層控制結構,在持久層,業務層和控制層分別採用@Repository、@Service、@Controller對分層中

java註解自定義註解

本文首先介紹了註解的基本概念和JDK內建的標準註解,然後介紹瞭如何自定義註解,最後給出了自定義註解的例子。 一、註解的基本概念 Java 註解就像修飾符一樣,可以用於從java程式碼中抽取文件、跟蹤程式碼中的依賴性或者在編譯時做檢查。註解可以被應用在包、類、

Spring JPA註解Column屬性

fault efault htm lan oracle runt arch public cal 該註解的定義如下: @Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface Column { String

Spring實現自動裝配(spring註解手動注入比較

概述 註釋配置相對於 XML 配置具有很多的優勢: 它可以充分利用 Java 的反射機制獲取類結構資訊,這些資訊可以有效減少配置的工作。如使用 JPA 註釋配置 ORM 對映時,我們就不需要指定 PO 的屬性名、型別等資訊,如果關係表字段和 PO 屬性名、型別都一致,您

轉載 logback的使用logback.xml http://www.cnblogs.com/warking/p/5710303.html

version tor red java代碼 根節點 ext private 字符串 npe logback的使用和logback.xml詳解 一、logback的介紹  Logback是由log4j創始人設計的另一個開源日誌組件,官方網站: http://logb

微信公眾開發URLtoken填寫

res wrap this true 進行 -m tmp sem 知識 微信公眾開發URL和token填寫詳解 方法/步驟 作為一名微信公眾號開發者,別人進入你的微信公眾號,肯定會看見某些網頁,或者給你發某些信息,你需要實時自動回復,所以你

storm集群部署配置過程

多少 帶來 進程 創建 使用 命令 介紹 aml 可能 ---恢復內容開始--- 先整體介紹一下搭建storm集群的步驟: 設置zookeeper集群 安裝依賴到所有nimbus和worker節點 下載並解壓storm發布版本到所有nimbus和worker節點 配置s

接口測試工具soapUI的安裝使用方法

service 技術 key custom media 負載 bmp file text soapUI是一個開源測試工具,通過soap/http來檢查、調用、實現Web Service的功能/負載/符合性測試。 使用soapUI可以非常方便的實現接口的功能測試、穩

Sql Server參數化查詢之where inlike實現

blog charindex 語句 pan 建議 ack rop for 臨時表 文章導讀 拼SQL實現where in查詢 使用CHARINDEX或like實現where in 參數化 使用exec動態執行SQl實現where in 參數化 為每一個參數生成一個參數

MySQL存儲引擎中的MyISAMInnoDB區別

訪問 過程 包含 lte 處理機制 comm 用戶 isam log MyISAM是MySQL的默認數據庫引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的順序訪問方法)所改良。雖然性能極佳,但卻有一個缺點:不

Android Studio中GitGitHub使用

可能 必須 窗口 gin 擁有 說明 詳細 對話 發現   一、Git和GitHub簡述    1.Git    分布式版本控制系統,最先使用於Linux社區,是一個開源免費的版本控制系統,功能類似於SVN和CVS。Git與其他版本管理工具最大的區別點和優點就是分布式;  

MyISAMInnoDB區別

sam 是什麽 註意 高速 dump 在操作 必須 index 自己 MyISAM是MySQL的默認數據庫引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的順序訪問方法)所改良。雖然性能極佳,但卻有一個缺點:不

netstat Recv-QSend-Q

java ket -a ant 相關 csdn min any ber http://blog.csdn.net/sjin_1314/article/details/9853163   通過netstat -anp可以查看機器的當前連接狀態: Active Inter

js keyup、keypresskeydown事件

rgs spa 小鍵盤 ansi 使用方法 form 單個 sage ges js keyup、keypress和keydown事件都是有關於鍵盤的事件 當一個按鍵被pressed 或released在每一個現代瀏覽器中,都可能有三種客戶端事件。 keydown even