هل هناك طريقة لتحميل كائن في السبات دون كتابة استعلام أو معرف؟

StackOverflow https://stackoverflow.com/questions/3630450

  •  26-09-2019
  •  | 
  •  

سؤال

يمكنني استمرار كائن في DB من Java على هذا النحو:

شخص الجدول:

varchar name  
varchar groupID  
varchar emailAddress  
key on (name, groupID)

وفي جافا

Person foo = new Person("dhackner", "3");  
session.persist(foo);

تشكل الوسيطتان المفتاح. في هذه الحالة ، يعد الاسم والمجموعة المفتاح الفريد في DB ، وبالتالي يكفي لتحديد أي صف معين في الجدول (يمكن أن يكون له إدخالات "Dhackner" متعددة ، ومجموعة "مجموعة 3" متعددة ، ولكن واحدة فقط "Dhackner ، Group 3 "الدخول).

بافتراض الإعداد الصحيح ، فإن هذا الرمز سيؤدي بنجاح إلى

    name | groupID | emailAddress  
dhackner |       3 |           ""

أود أن أكون قادرًا على القيام بعكس ذلك دون كتابة استعلام أو استخدام أي معرفات تلقائية:

شخص الجدول:

    name | groupID | emailAddress  
dhackner |       3 |  "something"  
dhackner |       4 |     "foobar"  
   other |       3 |     "barfoo"

في جافا:

Person foo = new Person("dhackner", "3");  
foo.load(); // something like this
Assert.assertEquals(foo.getEmailAddress(), "something");
هل كانت مفيدة؟

المحلول

نعم هناك ، يطلق عليه الاستعلام بالمثال إنه واضح ومباشر في السبات:

Person foo = new Person("dhackner", "3");
foo = session.createCriteria(Person.class).add(Example.create(foo)).uniqueResult();
Assert.assertEquals(foo.getEmailAddress(), "something");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top