سؤال

نحن نستخدم تعليقات السبات 3.4.0GA و Hibernate Core 3.3.2.ga (المعروف أيضًا باسم الإصدارات المستقرة الحالية) مقابل قاعدة بيانات Oracle

لدينا رسم خرائط واحد إلى أقصى مع قاعدة = 1 والتي عملت بشكل جيد لفترة من الوقت ، ولكن في الأسبوع الماضي وجدنا بعض الإدخالات في قاعدة البيانات حيث يحتوي عمود الفهرس على قيمة 0 والتي تسببت في جميع أنواع المشاكل.

لذا فإن سؤالي هو: هل يعرف أي شخص طريقة للحصول على قيمة 0 في عمود الفهرس لعلاقة واحدة إلى حد ، عندما يتم تعيينه بقاعدة = 1؟ ربما تتعلق باستخدام Generics أو MedSuperClass.

لاحظ أن الكود معقد إلى حد ما ، لأن الميراث متورط أيضًا.

فيما يلي الأجزاء ذات الصلة من الفصول:

// SuperClass of the One side
@MappedSuperclass
public abstract class AbstractReihung<Tp, Tw, Te extends AbstractReihungElement<Tp, Tw>>
{
  @OneToMany(cascade = CascadeType.ALL)
  @Cascade(
  {
      org.hibernate.annotations.CascadeType.ALL,
      org.hibernate.annotations.CascadeType.DELETE_ORPHAN
  })
  @JoinColumn(name = "parent_id", nullable = false)
  @IndexColumn(name = "position", base = 1, nullable = false)
  private List<Te> elements = new ArrayList<Te>();
}

// Super Class of the Many side
@MappedSuperclass
public abstract class AbstractReihungElement<Tp, Tw> extends AbstractDbObject
{
  @ManyToOne
  @JoinColumn(name = "parent_id", insertable = false, updatable = false, nullable = false)
  private Tp parent;

  @Column(name = "position", insertable = false, updatable = false, nullable = false)
  private int position;
}

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

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

المحلول

أعلم أن الأمر قد مر عامين تقريبًا ، لكنني عثرت على هذا أثناء البحث في حل عن نفس المشكلة. نحن نستخدم HBM عبر ملفات XML ، لذلك لست متأكدًا مما إذا كان هذا سيساعد. في حالتنا كانت المشكلة هي الخرائط العكسية. إذا كان التحكم في القائمة (والفهرس) على جانب القائمة ("كثير") كما هو الحال في حالتك ، فقد واجهنا المشكلة. تحريكها بحل هذا. لا أعرف كيف يتم ذلك مع التعليقات التوضيحية.

يمكن أن يكون هناك مصدر آخر للخطأ إذا قمت بتعيين "عناصر" على كائن abrstractreihung الخاص بك. يستخدم Hibernate كائنات وكيل للخصائص المحملة كسول. إذا قمت بتعيين مجموعة جديدة كاملة بدلاً من تعديل المجموعة الحالية ، فأنت تقوم بكتابة كائن الوكيل.

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