with primary foreign example data annotation java jpa annotations compound-key

java - primary - Claves compuestas en JPA



spring entity composite key (2)

Use @GeneratedValue para indicar que la clave se generará y @UniqueConstraint para expresar unicity

@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; }

Quiero crear una entidad que tenga una clave primaria autogenerada, pero también una clave compuesta única compuesta por otros dos campos. ¿Cómo hago esto en JPA?
Quiero hacer esto porque la clave primaria debe usarse como clave externa en otra tabla y hacerlo compuesto no sería bueno.

En el siguiente fragmento, necesito que el comando y el modelo sean únicos. pk es, por supuesto, la clave principal.

@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; }


Puedes usar @UniqueConstraint algo como esto:

@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; }

Esto permitirá que su implementación de JPA genere el DDL para la restricción única.