Hibernate бросает следующее исключение:(Hibernate) java.sql.SQLException: Поле «хххх» не имеет значения по умолчанию
Caused by: java.sql.SQLException: Field 'catVerb_id' doesn't have a default value
Люди говорят, что проблема с моим, которые имеют первичные ключи не оператор AUTO_INCREMENT, однако вы можете видеть, что я сделал это в своей базе данных, и проблема продолжается. Итак, я привел свои классы и мои реализации в базе данных.
Я думаю, что моя проблема связана с классом тестирования ... Кто-нибудь может показать мне, как я могу это проверить?
(Да, некоторые слова на португальском языке, но вы можете понять).
CategoriaVerbete
@Entity
@Table(name="verbete_categoria")
public class CategoriaVerbete implements Serializable{
private long id;
private String nome;
private String descricao;
private int serie;
private Set<Verbete> verbetes = new HashSet<Verbete>();
private Set<SignificadosVerbete> significados = new HashSet<SignificadosVerbete>();
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="catVerb_id")
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
...
@OneToMany(cascade = {CascadeType.ALL})
@JoinColumn(name="catVerb_id", nullable = true)
public Set<Verbete> getVerbetes() {
return verbetes;
}
public void setVerbetes(Set<Verbete> verbetes) {
this.verbetes = verbetes;
}
@OneToMany(cascade = {CascadeType.ALL})
@JoinColumn(name="catVerb_id", nullable = true)
public Set<SignificadosVerbete> getSignificados() {
return significados;
}
public void setSignificados(Set<SignificadosVerbete> significados) {
this.significados = significados;
}
}
Verbete
@Entity
@Table(name="verbete")
public class Verbete implements Serializable{
...
@ManyToOne
@JoinColumn(name="catVerb_id", insertable = false, updatable = false)
public CategoriaVerbete getCategoria() {
return categoria;
}
public void setCategoria(CategoriaVerbete categoria) {
this.categoria = categoria;
}
...
}
SignificadosVerbete
@Entity
@Table(name="verbete_significados")
public class SignificadosVerbete {
...
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="catVerb_id", insertable = false, updatable = false)
public CategoriaVerbete getCategoria() {
return categoria;
}
public void setCategoria(CategoriaVerbete categoria) {
this.categoria = categoria;
}
...
}
В базе данных ...
CREATE TABLE verbete_categoria (
catVerb_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
catVerb_nome VARCHAR(100) UNIQUE,
catVerb_descricao MEDIUMTEXT,
catVerb_serie INT NOT NULL
);
Любая помощь будет оценена, спасибо.
ОБНОВЛЕНИЕ - ПРОБЛЕМА решаемые
Ну, я ожидал триумфальный саундтрек, но это нормально ...
Я просто следовал тому, что эта ссылка говорит:
Я читал, что то, что в этой ссылке не рекомендуется в документации Hibernate, но я старался следовать рекомендациям и просил одну неделю обрабатывать ошибки. Поэтому я надеюсь, что это поможет другим людям.
И спасибо за все ответы.
Объявление аннотаций над идентификатором поля, а не методом get. – fmodos
Но я читал, что мы можем определить аннотации по методам get или по полям, и это нехорошо использовать оба в одном классе ... Я читал неправильно? – vitorgreati
не уверен, каждая ссылка, которую я использую ... объявляется над полем, где вы его читали? – fmodos