2

JPA 2 中有没有办法使用 @JoinTable 为行的 id 生成 UUID 键?我不想为这个表创建新实体(即使这样可以解决问题),我也不想从数据库中创建它。

    @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 classQuestion, 并在该类中为id.

  2. 无法使用规范 JPA 为列指定 UUID 值的自动生成。有使用OpenJPAHibernate的方法。 EclipseLink将允许您为此目的创建自定义生成器,他们的示例实际上是针对 UUID。

如果您想公开连接表的属性或让 JPA管理它们(即idExams_Questions表上),请查看此外部链接在此答案中找到)。您最终会得到从 Exam/Question 实体到连接表的 @OneToMany 关系,以及从连接表到 Exam/Question 实体的 @ManyToOne 关系。

将连接表作为实体公开将使您能够管理单独的键 (uuid)。如果您不需要uuid 主键,则不要这样做 - 没有必要解决问题,因为examId/questionId 组合是唯一的。

于 2013-03-24T16:54:26.513 回答