في jOOQ، إذا أردت استرجاع صف من الجدول إلى POJO (Plain Old Java Object) تم إنشاؤه تلقائيًا بواسطة jOOQ، يمكنك القيام بذلك باستخدام الأمر fetchOptionalInto
كما فعلت في المثال الذي قدمته. لكن عند القيام بعملية الانضمام (Join) بين جدولين، مثل USER
و ROLE
، يمكنك استخدام join
لإنشاء الانضمام ومن ثم استخدام fetchOptionalInto
لاسترجاع البيانات إلى الـ POJOs الخاصة بالجدولين.
لنفترض أن لديك جدولين: USER
و ROLE
، وترغب في استرجاع بيانات متصلة من الجدولين في كائنات POJO لكل جدول. يمكنك القيام بذلك كما يلي:
java// قم بعملية الانضمام بين الجدولين
Record record = dsl.select()
.from(USER)
.join(ROLE).on(USER.ROLE_ID.eq(ROLE.ID))
.where(USER.U_EMAIL.equal(email))
.fetchOptional();
// استرجاع البيانات إلى POJOs
User user = record.into(User.class);
Role role = record.into(Role.class);
في هذا المثال، يتم إنشاء الانضمام بين جدولي USER
و ROLE
باستخدام join
، ثم يتم استرجاع البيانات إلى POJOs من خلال record.into(User.class)
و record.into(Role.class)
.
يرجى ملاحظة أنه يجب أن تكون الصفوف المسترجعة متوافقة مع هيكل POJO المحدد.
المزيد من المعلومات
في jOOQ، يمكنك أيضًا استخدام الدالة fetchInto
لاسترجاع البيانات من عملية الانضمام (Join) إلى قائمة من الـ POJOs. على سبيل المثال، إذا كنت ترغب في استرجاع قائمة من الـ POJOs لكل جدول، يمكنك استخدام الكود التالي:
javaList
users = dsl.select() .from(USER) .join(ROLE).on(USER.ROLE_ID.eq(ROLE.ID)) .where(USER.U_EMAIL.equal(email)) .fetchInto(User.class); List roles = dsl.select() .from(USER) .join(ROLE).on(USER.ROLE_ID.eq(ROLE.ID)) .where(USER.U_EMAIL.equal(email)) .fetchInto(Role.class);
في هذا المثال، يتم استرجاع البيانات من الجدولين USER
و ROLE
إلى قوائم من الـ POJOs باستخدام fetchInto(User.class)
و fetchInto(Role.class)
على التوالي.
كما يمكنك استخدام الدالة fetchGroups
لاسترجاع البيانات من عملية الانضمام (Join) إلى مجموعات من الـ POJOs. على سبيل المثال، يمكنك استخدام الكود التالي:
javaMap> map = dsl.select()
.from(USER)
.join(ROLE).on(USER.ROLE_ID.eq(ROLE.ID))
.where(USER.U_EMAIL.equal(email))
.fetchGroups(User.class, Role.class);
User user = map.keySet().iterator().next();
List roles = map.get(user);
في هذا المثال، يتم استرجاع البيانات من الجدولين USER
و ROLE
إلى مجموعات من الـ POJOs باستخدام fetchGroups(User.class, Role.class)
، ثم يمكنك الوصول إلى البيانات باستخدام map.keySet()
و map.get(user)
.
يُرجى ملاحظة أنه يجب أن تكون هناك علاقة مناسبة بين الجدولين في قاعدة البيانات لضمان استرجاع البيانات بشكل صحيح.