8

自動生成された主キーだけでなく、他の 2 つのフィールドで構成される一意の複合キーを持つエンティティを作成したいと考えています。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 に答える