2016-07-07 3 views
0

アノテーションを使用して春に多くのJPAエンティティリレーションシップを行っていますが、「com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Column 'id' nullにはできません ";下記のよう は、以下の私のPOJOJPAエンティティリレーションシップでエラーが発生する

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

@Entity 
@Table(name = "STUDENTDB") 
public class Student { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private long id; 
    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; 
    } 

} 

そして、マップされたクラスです。

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.ManyToOne; 

@Entity 
public class Marks { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private long sid; 
    private int subject1; 
    private int subject2; 
    private int subject3; 

    @ManyToOne(optional=false) 
    @JoinColumn(name="id",referencedColumnName="id") 
    private Student s; 

    public Student getS() { 
     return s; 
    } 

    public void setS(Student s) { 
     this.s = s; 
    } 

    public long getSid() { 
     return sid; 
    } 

    public void setSid(long sid) { 
     this.sid = sid; 
    } 

    public int getSubject1() { 
     return subject1; 
    } 

    public void setSubject1(int subject1) { 
     this.subject1 = subject1; 
    } 

    public int getSubject2() { 
     return subject2; 
    } 

    public void setSubject2(int subject2) { 
     this.subject2 = subject2; 
    } 

    public int getSubject3() { 
     return subject3; 
    } 

    public void setSubject3(int subject3) { 
     this.subject3 = subject3; 
    } 

} 

だからこそ解決策はありますか?

+0

多分 '@Column(名前=「ID」、ユニーク=真、偽= NULL可能)を使用すると、これらのクラスを呼び出しているか' –

+0

は、コードの一部と、この例外 –

+0

になりステートメントを共有します「学生」や「マーク」を保存している間に「例外」を取得しますか? –

答えて

0

次のことを確認してください:

STUDENTDBという名前のテーブルは主キー列idAUTO_INCREMENT属性を有するように、データベースに定義されています。

上記の属性がなければ、@GeneratedValue(strategy = GenerationType.AUTO)は現在のシナリオでは機能しません。

1
package com.example; 
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 = "STUDENTDB") 
public class Student { 

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

} 
関連する問題