سؤال

أحتاج إلى إجراء التحقق من الصحة بناءً على نتيجة استعلام SQL.

يتم تعريف الاستعلام على أنه تعليق توضيحي namedquery في فول كيان بلدي.

وفقا لوثائق السبات (مستند) ، هناك إمكانية للتحقق من صحة بين العمليات التالية:
قبل التحقيق
ما قبل الإدخال
قبل التخلص

يشبه:

<hibernate-configuration>
    <session-factory>
       ...
    <event type="pre-update">
       <listener class="org.hibernate.cfg.beanvalidation.BeanValidationEventListener"/>
    </event>
    <event type="pre-insert">
        <listener class="org.hibernate.cfg.beanvalidation.BeanValidationEventListener"/>
    </event>
    <event type="pre-delete">
        <listener class="org.hibernate.cfg.beanvalidation.BeanValidationEventListener"/>
    </event>
</hibernate-configuration>

السؤال هو كيف لتوصيل الفاصولي مع تكوين التحقق من الصحة ، الموصوفة أعلاه.

محدث:

فئة الكيان

...
@Entity
@NamedQuery(name = "isValutaKursExists", query = "SELECT id FROM CurrencyRate WHERE bankId = :bankNum")
@Table(name = "Currency")
public class Currency {
...
هل كانت مفيدة؟

المحلول

والسؤال هو كيفية توصيل الفاصولي بتكوين التحقق من الصحة ، الموضح أعلاه.

تحتاج إلى شرحك مع التعليقات التوضيحية من واجهة برمجة تطبيقات التحقق من صحة الفول لإضافة القيود مثل @NotNull, @Size (مدمج) أو لتحديد بنفسك. لكن التحقق من صحة الفول لا يعني حقًا أداء التحقق من الصحة بناءً على نتيجة استعلام SQL.

بالمناسبة ، ذكرت @NamedQuery لذلك أعتقد أنك تستخدم Hibernate EntityManager. في هذه الحالة ، أوصي بدمج التحقق من صحة الفول مع JPA (بدلاً من السبات). إذا كنت تستخدم JPA 2.0 ، فما عليك سوى وضع تطبيق التحقق من صحة الفول على ClassPath. إذا كنت تستخدم JPA 1.0 ، راجع هذه الإجابة السابقة.

نصائح أخرى

نعم ، سيكون النهج الصحيح قيدًا مخصصًا مثل ValiverCurrency ومطابقة ValidCurrencyValidator. ستحتاج إلى الوصول إلى جلسة السبات الخاصة بك. entityManager في تنفيذ قيادتك. يمكنك الحصول على بعض الأفكار حول كيفية القيام بذلك على wiki السبات - الوصول إلى جلسة السبات ضمن عقيدة

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