8

我想创建一个实体,它有一个自动生成的主键,还有一个由其他两个字段组成的唯一复合键。我如何在 JPA 中做到这一点?
我想这样做是因为主键应该用作另一个表中的外键,并且使其复合并不好。

在以下代码段中,我需要命令和模型是唯一的。pk 当然是主键。

@Entity
@Table(name = "dm_action_plan")
public class ActionPlan {
    @Id
    private int pk;
    @Column(name = "command", nullable = false)
    private String command;
    @Column(name = "model", nullable = false)
    String model;
}
4

2 回答 2

18

你可以使用@UniqueConstraint这样的东西:

@Entity
@Table(name = "dm_action_plan",
       uniqueConstraints={ @UniqueConstraint(columnNames= "command","model") } )
public class ActionPlan {
    @Id
    private int pk;

    @Column(name = "command", nullable = false)
    private String command;

    @Column(name = "model", nullable = false)
    String model;
}

这将允许您的 JPA 实现为唯一约束生成 DDL。

于 2008-09-18T08:30:55.643 回答
0

使用@GeneratedValue 表示将生成密钥,使用@UniqueConstraint 表示唯一性

@Entity
@Table(name = "dm_action_plan"
       uniqueConstraint = @UniqueConstraint({"command", "model"})
)
public class ActionPlan {
    @Id
    @GeneratedValue
    private int pk;
    @Column(name = "command", nullable = false)
    private String command;
    @Column(name = "model", nullable = false)
    String model;
}
于 2008-09-18T08:33:20.550 回答