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

mem*_*und 3 java sql hibernate jpa

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

我正在尝试使用新的 JPA 2.1 Annotation @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;
}
Run Code Online (Sandbox Code Playgroud)

Bri*_*rgh 5

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

class Trip {
    @ManyToOne
    @JoinColumns(foreignKey = @ForeignKey(name = "FK_USER")
    private User user;
}
Run Code Online (Sandbox Code Playgroud)

  • 好的明白了:`@JoinColumns (foreignKey = @ForeignKey(name = "FK_USER"), value = { @JoinColumn(referencedColumnName = "firstname"), @JoinColumn(referencedColumnName = "lastname") })` (6认同)