Verbindung Schlüssel in JPA
-
01-07-2019 - |
Frage
Ich möchte eine Einheit machen, die einen automatisch generierten Primärschlüssel hat, sondern auch eine einzigartige Verbindung Schlüssel aus zwei anderen Bereichen. Wie kann ich tun dies in JPA?
Ich möchte, dies zu tun, weil der Primärschlüssel sollte als Fremdschlüssel in einer anderen Tabelle verwendet werden, und es macht Verbindung wäre nicht gut.
Im folgenden Ausschnitt, muß ich das Kommando und Modell eindeutig sein. pk ist natürlich der Primärschlüssel.
@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;
}
Lösung
Sie können mit @UniqueConstraint
etwas wie folgt aus:
@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;
}
Auf diese Weise können Sie Ihre JPA-Implementierung die DDL für die eindeutige Einschränkung erzeugen.
Andere Tipps
Verwenden @GeneratedValue, um anzuzeigen, dass der Schlüssel generiert und @UniqueConstraint unicity auszudrücken
@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;
}