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;
}
War es hilfreich?

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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top