سؤال

العمل على بعض رمز السبات القديم.

كيف أفعل ما يلي مع HBM.XML (ملف رسم الخرائط السباتي) بدلاً من التعليقات التوضيحية؟

@Table(name="users", uniqueConstraints = {
    @UniqueConstraint(columnNames={"username", "client"}),
    @UniqueConstraint(columnNames={"email", "client"})
})
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    private int id;
    private String username;
    private String email;
    private Client client;
}
هل كانت مفيدة؟

المحلول

استخدم ال properties بطاقة شعار:

...
<properties name="uk1" unique="true">
        <property name="username" .../>
        <many-to-one name="client" .../>
</properties>

<properties name="uk2" unique="true">
        <property name="email" .../>
        <many-to-one name="client" update="false" insert="false" .../>
</properties>
...

مستخلص الوثائق:

الu003Cproperties> يسمح العنصر بتعريف التجميع المنطقي المسماة لخصائص الفصل. أهم استخدام للبناء هو أنه يسمح بمجموعة من الخصائص بأن يكون هدفًا لعلم العقار. كما أنها طريقة مريحة لتحديد قيود فريدة متعددة العمود.

يتم وصف جميع الخيارات المتاحة في الوثائق السباتية.

نصائح أخرى

يمكنك أيضًا القيام بذلك:

  <many-to-one name="client" unique-key="uk1,uk2" .../>
  <property name="username" unique-key="uk1"  .../>
  <property name="email" unique-key="uk2"  .../>

لا تحتاج إلى استخدام العلامة في HBM. إذا كنت تريد فقط قيود فريدة متعددة.

يمكنك إضافة نفس السمة الفريدة إلى عمودين مختلفين. سيؤدي ذلك إلى إنشاء مفتاح فريد مركب.

<property name="firstName" column="first_name" unique-key="name" />
<property name="lastName" column="last_name" unique-key="name" />

في المثال أعلاه ، سيتم إنشاء المفتاح الفريد من عمود First_Name و Last_Name.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top