Composto chiavi in APP
-
01-07-2019 - |
Domanda
Voglio fare un'entità che ha un generata automaticamente chiave primaria, ma anche una singolare chiave composto di due altri campi.Come faccio a fare questo in JPA?
Io voglio fare questo perché la chiave primaria deve essere utilizzato come chiave esterna di un'altra tabella e rendendo il composto non sarebbe buono.
Nel seguente frammento di codice, ho bisogno di comando e modello unico.pk è, naturalmente, la chiave primaria.
@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;
}
Soluzione
È possibile utilizzare @UniqueConstraint
qualcosa di simile a questo :
@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;
}
Questo permetterà il vostro JPA attuazione per generare il DDL per l'unico vincolo.
Altri suggerimenti
Utilizzare @GeneratedValue per indicare che la chiave viene generata e @UniqueConstraint per esprimere l'unicità
@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;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow