如何使用复合键在表上映射外键名称?

时间:2014-04-11 09:12:52

标签: java sql hibernate jpa

我想设置由hibernate自动生成的外键约束名称,因此它不是fk_123213241341,而是fk_user

我尝试使用新的JPA 2.1注释@ForeignKey。但我可能错过了一些东西:

org.hibernate.AnnotationException: A Foreign key refering User from Trip has the wrong number of column. should be 2

@IdClass(UserPK.class)
class User {
    @Id
    String firstname;

    @Id
    String lastname;

    //other fields omitted
}

class UserPK {
    String firstname;
    String lastname;
}

class Trip {
    @ManyToOne
    @JoinColumn(foreignKey = @ForeignKey(name = "FK_USER")
    private User user;
}

1 个答案:

答案 0 :(得分:3)

您需要使用@JoinColumns注释(请注意's'):

class Trip {
    @ManyToOne
    @JoinColumns(foreignKey = @ForeignKey(name = "FK_USER")
    private User user;
}