質問
自動生成された主キーだけでなく、他の 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;
}
所属していません StackOverflow