[解決済み] Hibernateです。"フィールド 'id' はデフォルト値を持っていません"
2022-02-14 12:56:28
質問
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
).
どなたか教えてください。
EDIT 2:
確認済み
@GeneratedValue(strategy = GenerationType.XXX)
は解決しません。
SOLVED: データベースを再作成すると、問題が解決しました。
解決するには?
を実行しても、モデルやORMに加えられた変更がデータベースに正確に反映されないことがあります。
SchemaUpdate
.
もし、このエラーに納得のいく説明がないようであれば、データベースを再作成し(あるいは、少なくとも新規に作成し)、そのデータベースの足場を
SchemaExport
.
関連
-
[解決済み】imageio.IIOException: 入力ファイルが読み込めない
-
[解決済み】javaで指定されたファイルが見つからない
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み】Javaで無限大を実装する方法とは?
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] Hibernateの「オブジェクトは保存されていないトランジェントインスタンスを参照しています - フラッシュする前にトランジェントインスタンスを保存してください」エラーの修正方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み】 JAVA 変数宣言はここではできない
-
[解決済み】なぜjava.io.Fileにはcloseメソッドがないのでしょうか?
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】破損したjarファイル
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。