[解決済み] Hibernateのアノテーションを使用して外部キー制約をマークするにはどうすればよいですか?
2023-08-16 14:56:44
質問
データベーステーブルのモデルクラスを書くためにHibernateアノテーションを使おうとしています。
私は2つのテーブルを持っており、それぞれが主キーUserとQuestionを持っています。
@Entity
@Table(name="USER")
public class User
{
@Id
@Column(name="user_id")
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(name="username")
private String username;
// Getter and setter
}
質問表です。
@Entity
@Table(name="QUESTION")
public class Questions extends BaseEntity{
@Id
@Column(name="question_id")
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Column(name="question_text")
private String question_text;
// Getter and setter
}
そして、もう1つUserAnswerというテーブルがありますが、これは上記の2つのテーブルからuserIdとquestionIdを外部キーとして持っています。
しかし、私はUserAnswerテーブルでこれらの制約をどのように参照できるかを見つけることができません。
@Entity
@Table(name="UserAnswer ")
public class UserAnswer
{
@Column(name="user_id")
private User user;
//@ManyToMany
@Column(name="question_id")
private Questions questions ;
@Column(name="response")
private String response;
// Getter and setter
}
どうすれば実現できるのでしょうか?
どのように解決するのですか?
@Column
は適切なアノテーションではありません。ユーザーまたは質問全体を列に格納したいわけではありません。エンティティ間の関連付けを作成したいのです。名前を変更することから始めましょう。
Questions
を
Question
に変更します。インスタンスは1つの質問を表し、複数の質問は表さないからです。そして、関連付けを作成します。
@Entity
@Table(name = "UserAnswer")
public class UserAnswer {
// this entity needs an ID:
@Id
@Column(name="useranswer_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@ManyToOne
@JoinColumn(name = "question_id")
private Question question;
@Column(name = "response")
private String response;
//getter and setter
}
この Hibernateのドキュメント がそれを説明しています。読んでみてください。そして、アノテーションのjavadocも読んでください。
関連
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
Junitのユニットテストはjava.lang.Testを報告します。
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] スタックトレースを文字列に変換するにはどうすればよいですか?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
Uncaught ReferenceError: は定義されていません。
-
-bash: java: コマンドが見つからない 解決方法
-
Javaがテキストファイルを読み込む
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。