Hibernate: “Field” id “non ha un valore predefinito”

Sto affrontando quello che penso sia un problema semplice con Hibernate, ma non posso risolverlo (i forum di Hibernate che sono irraggiungibili certamente non aiutano).

Ho una class semplice che mi piacerebbe persistere, ma continuo a ricevere:

SEVERE: Field 'id' doesn't have a default value Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [hibtest.model.Mensagem] at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91) [ a bunch more ] Caused by: java.sql.SQLException: Field 'id' doesn't have a default value [ a bunch more ] 

Il codice rilevante per la class persistente è:

 package hibtest.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; @Entity @Inheritance(strategy = InheritanceType.JOINED) public class Mensagem { protected Long id; protected Mensagem() { } @Id @GeneratedValue public Long getId() { return id; } public Mensagem setId(Long id) { this.id = id; return this; } } 

E il codice corrente è semplice:

 SessionFactory factory = new AnnotationConfiguration() .configure() .buildSessionFactory(); { Session session = factory.openSession(); Transaction tx = session.beginTransaction(); Mensagem msg = new Mensagem("YARR!"); session.save(msg); tx.commit(); session.close(); } 

Ho provato alcune “strategie” all’interno dell’annotazione GeneratedValue ma non sembra funzionare. Anche l’inizializzazione id non aiuta! (es. Long id = 20L ).

Qualcuno potrebbe far luce?

EDIT 2: confermato: @GeneratedValue(strategy = GenerationType.XXX) con @GeneratedValue(strategy = GenerationType.XXX) non lo risolve

RISOLTO: la ricostruzione del database ha risolto il problema