سؤال

لدي قائمة من الكائنات و كل كائن في القائمة وهو الموقف الذي قد لا تغيير إلا إذا صراحة تغيرت ، وبعبارة أخرى ، فإن الكائنات في طابور.ما جمع يجب استخدامها في الفئة الكيان تخزين هذه الأشياء و كيف ينبغي أن يكون جمع المشروح?

أنا حاليا وهذا

@Entity
class Foo {
  ...
  @OneToMany(mappedBy = "foo", cascade = CascadeType.ALL)
  List<Bar> bars = new ArrayList<Bar>();
  ...
}

إذا كان هذا غير ممكن مع JPA بحتة, أنا باستخدام EclipseLink كما JPA مزود لذا EclipseLink محددة الشروح سوف موافق إذا أي شيء آخر يساعد.

تحرير:ملاحظة الناس ، المشكلة ليست أن جافا لا preserv النظام ، أنا أعرف معظم مجموعات, المشكلة هي أنني لا أعرف طريقة ذكية للحصول على JPA إلى preserv النظام.بعد أن أمر معرف إجراء الاستعلام أمر من الممكن في حالة الحفاظ على النظام معرف شاقة (لأن واجهة المستخدم يتيح إعادة ترتيب البنود) و أنا أبحث عن طريقة ذكية للقيام بذلك.

هل كانت مفيدة؟

المحلول

إذا كنت تريد أن يكون هذا أمر بعد الجولة تنطلق إلى SQL، يجب أن توفر نوعا من الطلب ID داخل الكيان نفسه - SQL هو بطبيعة الحال تحديد المنحى بدلا من المنحى القائمة. يمكنك بعد ذلك إما نوع بعد جلب لهم مرة أخرى، أو تأكد من يحدد الاستعلام الخاص بك ترتيب للغاية.

إذا كنت تعطي الكيان معرف صحيح الذي تم إنشاؤه تلقائيا هذا <م> قد العمل، ولكن لا أريد لضمان ذلك.

نصائح أخرى

استخدم معرف ترتيب، كما اقترح جون، ثم إضافة تعليق توضيحيOrderBy تحتOneToMany. وهذا النظام أي استفسار من قبل الحقل المحدد.

وعلى سبيل المثال، إذا قمت بإضافة حقل جديد يسمى "sortId" لبار، فو قد تبدو هذه:

@Entity
class Foo {
  ...
  @OneToMany(mappedBy = "foo", cascade = CascadeType.ALL)
  @OrderBy("sortId ASC")
  List bars = new ArrayList();
  ...
}

يمكنك

  1. فرز قائمة قبل إنشاء
  2. فرز قائمة بعد الخلق
  3. استخدام مجموعة أن يؤدي إلى نوع على إدراج.TreeMap, TreeSet

وهناك قائمة مرتبطة تنفذ و inteface قائمة الانتظار في جافا، ويسمح لك لإضافة أشياء في منتصف ...

يتم ترتيب

وTBH معظم مجموعات ليست لهم ...

والتحقق من المستندات، ويقول معظم أم لا يؤمرون.

ومن الجدير تحاول قائمة متصلة بدلا من ArrayList، لكن، وكما قال جون، عليك أن تجد وسيلة لاستمرار معلومات النظام.

وهناك حل وربما تنطوي على إصدار عدد أجل كل دخول لتخزين أنها SortedMap، عند التحويل إلى قائمة، إذا قائمة هي التي تحتاج إليها.

ولكن، ORM من المحتمل أن تكون ذكية بما فيه الكفاية للقيام بكل التحويلات بالنسبة لك إذا كنت تخزين جمع كما قائمة متصلة.

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