この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
ページ更新者:T
更新日時:2026-05-15 03:52:15

タイトル: @GeneratedValue
SEOタイトル: 【Spring】@GeneratedValueアノテーションとは

この記事の要点
  • @GeneratedValue は JPA Entity の主キーに付ける自動採番アノテーション
  • @Id必ずセットで使用する
  • 戦略: IDENTITY(DB の AUTO_INCREMENT を利用)/ SEQUENCE(Oracle 等のシーケンス)/ AUTO(DB に応じて選択)/ TABLE
  • MySQL 系なら GenerationType.IDENTITY が定番

 

本稿はSpringFrameworkの@GeneratedValueについて説明します。

@GeneratedValueとは

主キーのID(サロゲートキー)を採番する役割がGeneratedValueアノテーションとなります。

以下、GeneratedValueアノテーションの実装例です。

package com.example.demo.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="user")
public class User {
    
    @Id

    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private long id;
    
    @Column(length=50, nullable = false)
    private String name;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

GenerationTypeには以下のものを指定することが出来ます。

・GenerationType.IDENTITY

MySQLやPostgreSQLでAUTO_INCREMENTやSERIALを指定している場合に使用します。

 

・GenerationType.SEQUENCE

OracleやPostgreSQLでシーケンスオブジェクトを使用している場合に使用します。

 

・GenerationType.TABLE

独自のID採番用テーブルを使用している場合に使用します。

※詳しい使用方法はどなたか記載をお願い致します。

 

・GenerationType.AUTO

各データベースの仕様に応じて適切な採番方法で認識します。