SQL JPA - 多列作为主键

2022-08-31 21:06:56

如果我想让 severeal Column 组成一个 ID。

SQL 示例:

CONSTRAINT [PK_NAME] PRIMARY KEY ([Column1],[Column2],[Column3])

如何使用Jpa实体类执行此操作?通过列定义 ?

只需将 id 字段设置为:

value = Column1 + Column2 + Column3 // aint working.

答案 1

您需要为复合键设置一个类:

public class CompositeKey implements Serializable {
    private int column1;
    private int column2;
    private int column3;
}

然后在实体类中使用注释:@IdClass

@Entity
@IdClass(CompositeKey.class)
public class EntityExample {
    @Id
    private int column1;
    @Id
    private int column2;
    @Id
    private int column3;
    ...
    ...
}

我认为这应该有效。希望它有帮助,干杯!

是的,还有另一种解决方案,@jklee提到的解决方案,两者都有效,这是一个偏好问题。


答案 2

使用和 。@Embeddable@EmbeddedId

例:

@Entity
public class Project implements Serializable {
    @EmbeddedId ProjectId id;
}
 
@Embeddable
class ProjectId implements Serializable {
    int departmentId;
    long projectId;
}

更多信息请点击这里 http://www.objectdb.com/java/jpa/entity/id#Embedded_Primary_Key_


推荐