2016-12-06 2 views
0

J'ai une entité de cours basée sur des annotations. Quand je créais et enregistrais mes cours auparavant, ça fonctionnait bien, mais j'ai changé quelque chose et maintenant il montre une erreur que "NULL n'est pas autorisé pour la colonne" COURSE_ID "; instruction: | insert dans COURSES (course_id, course_description, course_links, course_links) des valeurs (?? null,,,) "Hibernate @GeneratedValue ne génère pas de valeur auto-incrémentée comme précédemment

@Entity 
@Table(name = "COURSES") 
public class Courses { 

    @Id 
    @GeneratedValue 
    @Column(name = "course_id") 
    private int id; 

    @Column(name = "course_name", nullable = false) 
    private String courseName; 

    @Column(name = "course_description") 
    private String courseDescription; 

    @Column(name = "course_links") 
    private String links; 

    public void setCourseDescription(String courseDescription) { 
     this.courseDescription = courseDescription; 
    } 

    public void setLinks(String links) { 
     this.links = links; 
    } 

    public String getCourseDescription() { 
     return courseDescription; 
    } 

    public String getLinks() { 
     return links; 
    } 
    /// constructor 
    public Courses(String courseName, String courseDescription, String links) { 
     this.courseName = courseName; 
     this.courseDescription = courseDescription; 
     this.links = links; 
    } 

    @Override 
    public String toString() { 
     return "Courses{" + "id=" + id + ", courseName=" + courseName + ", courseDescription=" + courseDescription + ", links=" + links + '}'; 
    } 

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

    public void setCourseName(String courseName) { 
     this.courseName = courseName; 
    } 

    public int getId() { 
     return id; 
    } 

    public String getCourseName() { 
     return courseName; 
    } 

    public Courses(){ 

    } 

} 

ma méthode pour les cours d'économie:

SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory(); 

    public void save(Courses course) { 

     Session session = sf.openSession(); 
     Transaction transaction = session.beginTransaction(); 
     session.save(course); 
     session.flush(); 
     transaction.commit(); 
     session.close(); 
    } 

i apprécierait toute aide.

+0

Pour une raison quelconque, votre instruction générée n'est pas correcte, je pense, car la valeur ne sera pas générée lorsque vous passez une valeur NULL. Il ne doit pas mettre de valeur dans le champ généré automatiquement, c'est-à-dire: insérer dans les valeurs COURSES (cours_description, nom_du cours, cours_liens) (?,?,?). – eternay

+0

Quelle base de données utilisez-vous? Êtes-vous sûr que votre base de données prend en charge la génération d'identifiants par des colonnes d'identité (par exemple Oracle ne prend pas en charge ce type de génération)? –

Répondre

0

Quand je recréée une table ne pas utiliser @GeneratedValue. J'ai supprimé ma table et l'ai créé à nouveau via la console h2 et j'ai écrit auto_increment sur le champ id. maintenant cela fonctionne comme il se doit.

0

la partie manquante de la stratégie:

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@Column(name = "course_id") 
private int id; 
+0

ça n'aide pas. – Papich

+0

L'avez-vous essayé? – user3651845

+0

oui je l'ai essayé et rien n'a changé. même erreur – Papich