1

「部門」という名前のエンティティと、「学生」という名前の別のエンティティがあります。学部には多くの学生がいて、データベース内のこれら2つのテーブルの間に関係があるはずです。しかし、私のプロジェクトでは、DB テーブルは既に存在し、部門テーブルと学生テーブルの間に関係 (外部キー) はありません。

エンティティクラスの student.java には、次のように記述された関係があります。

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = 'DeptId', nullable = false, insertable = false, updatable = false)
Department department

この既存のコードについて混乱しています。

テストを書いたとき、deptId で DB から学科を取得し、学生エンティティを次のように設定しています。

student.setDepartment(department);

これは、学生テーブルの DB 列「DEPTID」にデータを入力しません。

Department には学生コレクションがないため、学生を次のように設定することはできません。

department.addStudents(student);

DB 内のテーブル間の関係なしに @ManyToOne 関係を主張できるかどうかはわかりません。

学生テーブルの「DEPTID」列に正しいデータが入力されるように、この問題を修正する方法を教えてください。

前もってありがとう、BS

4

2 に答える 2

1

あなたは持っている

@JoinColumn(name = 'DeptId', nullable = false, insertable = false, updatable = false) 代わりに、なぜあなたはしようとしないのですか

@JoinColumn(name = 'DeptId', nullable = false)

Hibernate は、配置しているマッピング制約が db レベルで有効かどうかをチェックしません。有効であると想定し、その想定に基づいてクエリを実行します。

于 2012-12-03T18:44:58.377 に答える
0

こんにちは、質問への返信が遅くなって申し訳ありませんが、返信は他の人にも同じように役立つと思います. テーブルがデータベースに既に存在すると言った場合、それらhaven't yet got some dataを提案する場合は、ファイルdropでアクティブ化して、その場合、目的の関係列でそれらのテーブルを再作成します。クラスにアノテーションを使用して、多くの学生を受け入れる能力を示すことも忘れないでください。と一緒に使用されます。Table Generation Strategypersistence.xmlCreate@OneToManyDepartment.java@ManyToOne

于 2015-04-03T10:49:45.870 に答える