質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

12399閲覧

SpringBootで@GeneratedValueを使いIDを自動生成したいがnullエラーとなる。

uraniwa

総合スコア11

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2016/09/19 08:21

編集2016/09/19 08:39

###前提・実現したいこと
SpringBootの勉強中です。Eclipseでユーザー登録を行うシステムをつくっています。
idを@GeneratedValueで自動生成しようと思ったのですが、登録時にidがnullであるとエラーがでます。
自動で採番され、登録させたいです。
よろしくお願いします。

###発生している問題・エラーメッセージ

ブラウザ上からフォームに登録内容を打ち込み、POSTすると下記エラーが発生します。
"id"項目はhiddenとして記入できないようにしています。

org.postgresql.util.PSQLException: ERROR: null value in column "id" violates not-null constraint
詳細: Failing row contains (null, touroku, 1234, mail).

###該当のソースコード

HTML

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="UTF-8"> 5 <title>top page</title> 6 <meta http-equiv="Content-Type" content = "text/html; charset = UTF-8" /></meta> 7 8 <style> 9 h1 {font-size:18pt; font-weight:bold; color:gray;} 10 body{font-size:13pt; color:gray; margin:5px 25px;} 11 tr { margin:5px} 12 th { padding:5px; color:white; background:darkgray;} 13 td { padding:5px; color:black; background:#e0e0ff;} 14 pre{ border: solid 3px #ddd; padding: 10px; } 15 </style> 16</head> 17<body> 18 <h1 th:text="#{content.title}">登録ページ</h1> 19 <table> 20 <form method="post" action="/" th:object="${formModel}"> 21 <tr><td><label for="id">id</label></td> 22 <td><input type="hidden" name="id" th:value="*{id}" /></td></tr> 23 <tr><td><label for="user_id">user_id</label></td> 24 <td><input type="text" name="user_id" th:value="*{user_id}" /></td></tr> 25 <tr><td><label for="pass">pass</label></td> 26 <td><input type="text" name="pass" th:value="*{pass}" /></td></tr> 27 <tr><td><label for="mail">mail</label></td> 28 <td><input type="text" name="mail" th:value="*{mail}" /></td></tr> 29 <tr><td></td><td><input type="submit" /></td></tr> 30 </form> 31 </table> 32 <hr/> 33 <table> 34 <tr><th>ID</th><th>USER_ID</th><th>PASS</th><th>MAIL</th></tr> 35 <tr th:each="obj : ${datalist}"> 36 <td th:text="${obj.id}"></td> 37 <td th:text="${obj.user_id}"></td> 38 <td th:text="${obj.pass}"></td> 39 <td th:text="${obj.mail}"></td> 40 </tr> 41 </table> 42</body> 43</html>

Java

1 @RequestMapping(value = "/" , method = RequestMethod.POST) 2 @Transactional(readOnly = false) 3 public ModelAndView form( 4 @ModelAttribute("formModel") Kadai_User kadai_user , ModelAndView mav){ 5 repository.saveAndFlush(kadai_user); 6 return new ModelAndView("redirect:/"); 7 }

Java

1package com.pstgrs.jpa; 2 3import javax.persistence.*; 4 5@Entity 6@Table(name="Kadai_User") 7public class Kadai_User{ 8 9 @Id 10 @GeneratedValue(strategy=GenerationType.IDENTITY) 11 @Column 12 private long id; 13 14 @Column 15 private String user_id; 16 17 @Column 18 private String pass; 19 20 @Column 21 private String mail; 22 23 public long getId() { 24 return id; 25 } 26 27 public void setId(long id) { 28 this.id = id; 29 } 30 31 public String getUser_id() { 32 return user_id; 33 } 34 35 public void setUser_id(String user_id) { 36 this.user_id = user_id; 37 } 38 39 public String getPass() { 40 return pass; 41 } 42 43 public void setPass(String pass) { 44 this.pass = pass; 45 } 46 47 public String getMail() { 48 return mail; 49 } 50 51 public void setMail(String mail) { 52 this.mail = mail; 53 } 54}

SQL

1 kadai_user 2 id integer NOT NULL, 3 user_id character varying(10), 4 pass character varying(10), 5 mail character varying NOT NULL, 6 CONSTRAINT user_pkey PRIMARY KEY (id)

###補足情報(言語/FW/ツール等のバージョンなど)
Java
SpringBoot
Eclipse Version: Mars.2 Release (4.5.2)
STS for eclipse 3.8.1
PostgreSQL 9.4.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

みづらい、コードは選択して <code> を押してください。

postgreSQL の場合は

@Entity @Table(name="Kadai_User") public class Kadai_User{ @Id // 自動設定 @GeneratedValue(strategy=GenerationType.AUTO) // もしくは シーケンス用テーブル // @GeneratedValue(strategy=GenerationType.TABLE) // もしくは シーケンス // @GeneratedValue(strategy=GenerationType.SEQUENCE) @Column private long id; }

ですね。

投稿2016/09/19 08:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/09/19 08:31 編集

テーブルの変更(ALTER TABLE)、シーケンスの作成権限がない場合はこの方法が使えません。
uraniwa

2016/09/19 09:45

指摘ありがとうございます。 <code>押下で表記修正しました。 @GeneratedValue(strategy=GenerationType.AUTO) に変更したところ、今度は「"hibernate_sequence" does not exist」というエラーに変わったのですが、application.propertyに下記を追加したら解決しました。 spring.jpa.hibernate.ddl-auto=create-drop 無事、登録できるようになりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問