هل هناك طريقة لتحميل كائن في السبات دون كتابة استعلام أو معرف؟
سؤال
يمكنني استمرار كائن في 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");
لا تنتمي إلى StackOverflow