2016-12-19 22 views
2

Spring Data JPAフレームワークを使用して簡単なToDoオブジェクトを作成しようとしていますが、できません。ID値が自動的に生成されない

リポジトリでsaveメソッドを呼び出すときに、IDの値がnullであるというSQL例外が発生します。私のToDoクラスのコードは以下の通りです。

package demo.entity; 

import javax.persistence.*; 

/** 
* Created by MJ on 12/19/2016. 
*/ 
@Entity 
@Table(name="TODOS") 
public class ToDo { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "id", nullable = false, unique = true) 
    private Long id; 

    @Column 
    private String description; 

    @Column 
    private String title; 

    public ToDo(String description, String title){ 
     this.description = description; 
     this.title = title; 
    } 
} 

私の理解によれば、これは自分のIDを生成するはずです。しかし、私は何が欠けているか分からない。誰も助けることができますか?

これは、私は、このクラスのオブジェクトを作成し、DBに保存しようとしている方法です:事前に

ToDo toDo = new ToDo("First","TODO"); 
repository.save(toDo); 

感謝。

+0

idの@Columnを追加する必要はありません。私が知っているように、IDENTITYはすべてのデータベースで動作しません。 GenerationType.AUTOを設定するとうまくいきますか? – XtremeBaumer

+0

あなたのDBMSは何ですか? – Andremoniy

+0

@CoulumnとGenerationType.AUTOを使わずに試しましたが、同じエラーが発生しました。 – Logan

答えて

4

ID列をDBの自動インクリメントとして変更する

+1

AUTOでは、戦略を選択するためにJPAプロバイダに任せています。特定のものが使用されることを保証するものではありません(また、列をAUTO_INCREMENTに設定し、プロバイダがTABLEを選択した場合は失敗します)。彼のオリジナルのIDENTITYの選択は、MySQLのためにはうまくいくはずです...もし彼がカラム –

+0

にAUTO_INCREMENTを持っていれば、@Neil Stocktonは情報に感謝します。 –

関連する問題