質問

自動生成された主キーだけでなく、他の 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;
}
役に立ちましたか?

解決

使用できます @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 を生成できるようになります。

他のヒント

@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;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top