Hibernate의 단순한 문제라고 생각하는 문제에 직면하고 있지만 해결할 수 없습니다 (Hibernate 포럼에 도달 할 수없는 것은 확실히 도움이되지 않습니다).
유지하고 싶은 간단한 수업이 있지만 계속 받고 있습니다.
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 ]
지속되는 클래스의 관련 코드는 다음과 같습니다.
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;
}
}
그리고 실제 실행 코드는 평범합니다.
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();
}
GeneratedValue
주석 내에서 "전략"을 시도했지만 작동하지 않는 것 같습니다. 초기화 id
해도 도움이되지 않습니다! (예 :) Long id = 20L
.
누구나 빛을 비출 수 있습니까?
편집 2 : 확인 : 혼란으로 @GeneratedValue(strategy = GenerationType.XXX)
해결되지 않습니다
해결 : 데이터베이스를 다시 작성하면 문제가 해결되었습니다.
GenerationType
에 @GeneratedValue
에서 IDENTITY
에 AUTO
그것은 나를 위해 일했습니다. 또한 MySQL에서 자동 증분 속성을 설정할 수 있습니다.