سؤال

أنا تريد أن تجعل كيان لديه إنشاؤه تلقائيا مفتاح أساسي ، ولكن أيضا فريدة من نوعها مجمع الرئيسية تتكون من اثنين من المجالات الأخرى.كيف أفعل هذا في 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 للتعبير عن 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;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top