سؤال

أنا باستخدام الربيع رو مع طبقات مستودع.لدي فصلين:وثيقة (مع عنوان المستند) ومليئةوثيقة (تحتوي على المستند ذي الصلة).مثل هذا:

public class Document {

    /**
     */
    @NotNull
    private String titleDocument;
    ...
}

public class FilledDocument {

    /**
     */
    @OneToOne
    private Document relatedDocument;
    ...
}

وأود أن إنشاء مكتشف للفئة فيلددوكومنت التي تتطابق مع العنوان داخل أتريبوت ريلاتدوكومنت.

أنا باستخدام الحل الذي إيسنت أنيقة وفعالة.في بلدي تحكم لدي:

@RequestMapping(params = "find", produces = "text/html")
public String findFilledDocumentsByTitleDocumentContaining(@RequestParam(value = "title", required = true) String title, Model uiModel) {

    LinkedList<FilledDocument> allFilledDocuments = new LinkedList<FilledDocument>();
    allFilledDocuments.addAll(filledDocumentService.findAllFilledDocuments());

    ArrayList<FilledDocument> filledDocuments=new ArrayList<FilledDocument>();

    for( FilledDocument filledDocument : allFilledDocuments ) {
        if( filledDocument.getRelatedDocument().getTitleDocument().toLowerCase().contains(title.toLowerCase()) == true ) {
            filledDocuments.add(filledDocument);
        }
    }       

    uiModel.addAttribute("filleddocuments", filledDocuments);
    return "filleddocuments/list";
}

أنا أقرأ هذا بيانات الربيع جبا-الوثائق المرجعية وأنا أحاول مع @ الاستعلام في فئة مستودع ، مثل هذا:

@Query("select f from FilledDocument f where f.relatedDocument.titleDocument containing = ?1")
public ArrayList<FilledDocument> findFilledDocumentByTitleDocument(@Param("titleDocument") String titleDocument);

لكنها لا تعمل.أي أفكار?

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

المحلول

إذا كنت تستخدم بيانات الربيع جبا 1.3.1 أو أحدث يمكنك الكتابة فقط :

@Query("select f from FilledDocument f where f.relatedDocument.titleDocument like %:title%")
List<FilledDocument> findFilledDocumentByTitleDocument(@Param("title") String titleDocument);

إذا كنت عالقة على إصدار أقدم ثم التعليمات البرمجية الخاصة بك سيكون:

@Query("select f from FilledDocument f where f.relatedDocument.titleDocument like :title")
List<FilledDocument> findFilledDocumentByTitleDocument(@Param("title") String titleDocument);

وعند استدعاء findFilledDocumentByTitleDocument الطريقة التي تحتاج إلى تمرير

"%"+title+"%"

كحجة.

تحقق من هذا بلوق وظيفة للقصة الكاملة والقسم 1.3.4 من الوثائق.

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