JPA 2@JoinTable与keygeneration

JPA 2@JoinTable与keygeneration,jpa,persistence,jointable,Jpa,Persistence,Jointable,JPA2中有没有一种方法可以使用@JoinTable为行的id生成UUID键?我不想为此表创建新实体(即使这样可以解决问题),也不想从DB创建它 @ManyToMany @JoinTable(name="Exams_Questions", schema="relation", joinColumns = @JoinColumn(name="examId", referencedColumnName="id"), inverseJoi

JPA2中有没有一种方法可以使用@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>();

我不确定问题到底是什么,但让我试着回答一下

就你的第一句话而言,我会说“是”和“可能”:

  • 对于
    问题
    ,您需要一个单独的
    @实体类
    ,在该类中,您需要指定
    id
    的映射

  • 使用spec JPA无法为列指定UUID值的自动生成。有很多方法可以使用和。将允许您为此目的创建自定义生成器,实际上,它们的示例是针对UUID的

  • 如果您想公开联接表的属性或让JPA管理它们(即
    tests\u Questions
    表上的
    id
    ),请参阅()。您将得到从考试/问题实体到联接表的@OneToMany关系,以及从联接表到考试/问题实体的@manytone关系


    将联接表作为实体公开将允许您管理单独的键(uuid)。如果您不需要uuid主键,那么就不要这样做-不必解决问题,因为examId/questionId组合是唯一的。

    由于语法问题,所问的问题很难理解。请注意EclipseLink 2.4使用@UuidGenerator支持uuid
    CREATE TABLE [relation].[Exams_Questions](
        [id] [uniqueidentifier] PRIMARY KEY NOT NULL,
        [examId] [uniqueidentifier] NOT NULL,
        [questionId] [uniqueidentifier] NOT NULL,