SQL JPA - 多列作为主键

新手上路,请多包涵

如果我想要严重的 Column 来组成一个 ID。

SQL 示例:

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

我怎么能用 Jpa Entity 类做到这一点?通过列定义?

只需将 id 字段设置为:

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

原文由 Anders Pedersen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 470
2 个回答

您需要为复合键创建一个类:

 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 提到的那个,两者都有效,这是一个偏好问题。

原文由 Raul Cuth 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果类中的所有字段都是主键的一部分,那么解决方案将非常简单(@raul-cuth 提供的扩展解决方案):

 @Entity
@IdClass(EntityExample.class)
public class EntityExample implements Serializable {

    @Id
    private int column1;

    @Id
    private int column2;

    @Id
    private int column3;
}

原文由 heroin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏