2

JPA 2 で @JoinTable を使用して行の ID の UUID キーを生成する方法はありますか? このテーブルの新しいエンティティを作成したくありません (問題が解決したとしても)。また、DB から作成したくありません。

    @ManyToMany
    @JoinTable(name="Exams_Questions", schema="relation",
            joinColumns = @JoinColumn(name="examId", referencedColumnName="id"),
            inverseJoinColumns = @JoinColumn(name="questionId", referencedColumnName = "id"))   
    private List<Question> questions = new ArrayList<Question>();

データベーステーブル

CREATE TABLE [relation].[Exams_Questions](
    [id] [uniqueidentifier] PRIMARY KEY NOT NULL,
    [examId] [uniqueidentifier] NOT NULL,
    [questionId] [uniqueidentifier] NOT NULL,
4

1 に答える 1

0

質問の内容がよくわかりませんが、回答を試してみてください。

あなたの最初の文だけで、私は「はい」と「おそらく」と言うでしょう:

  1. @Entity classには別のが必要です。Questionそのクラスでは、 のマッピングを指定しますid

  2. spec JPA を使用して、列の UUID 値の自動生成を指定する方法はありません。OpenJPAHibernateを使用する方法があります。 EclipseLinkでは、この目的のためにカスタム ジェネレータを作成できます。実際、その例は UUID 用です。

join-table のプロパティを公開するか、それ以外の場合は JPAでそれらを管理する (つまり、テーブルid上にある) 場合は、この外部リンク(この回答にある) を参照してください。最終的には、Exam/Question エンティティから結合テーブルへの @OneToMany リレーションと、結合テーブルから Exam/Question エンティティへの @ManyToOne リレーションになります。Exams_Questions

結合テーブルをエンティティとして公開すると、個別のキー (uuid) を管理できます。uuid プライマリ キーが必要ない場合は、これを行わないでください。examId/questionId の組み合わせは一意であるため、問題を解決する必要はありません。

于 2013-03-24T16:54:26.513 に答える