لماذا findAllBy* فشل عند استخدام ثلاثة شروط في الكؤوس/جورم ؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

النظر في المسائل التالية الأعراف من الكؤوس/GORM ديناميكية مكتشف طريقة findAllBy*:

def foo1 = Foo.findAllByYear(yyyy)
def foo2 = Foo.findAllByMonth(mm)
def foo3 = Foo.findAllByDay(dd)
def foo4 = Foo.findAllByYearAndMonth(yyyy, mm)
def foo5 = Foo.findAllByYearAndDay(yyyy, dd)
def foo6 = Foo.findAllByYearAndMonthAndDay(yyyy, mm, dd)

println "# foo1=${foo1.size()} foo2=${foo2.size()} foo3=${foo3.size()}"
println "# foo4=${foo4.size()} foo5=${foo5.size()} foo6=${foo6.size()}"

الخمسة الأولى من هذه الديناميكية الباحث الأعراف يعمل كما هو متوقع.

ومع ذلك, السادس الذي فشل مع InvalidPropertyException ("لا المنشأة العثور على اسم [yearAndMonth] الفصل [فئة فو]").

السؤال:

لماذا لا سدس العمل ؟ ليس findAllBy* قادرة على التعامل مع أكثر من عقدين من شروط ؟ الحل/العمل ؟

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

المحلول

تيد الجواب الصحيح ، ولكن السبب لماذا الكؤوس لا يدعم أكثر من 2 المسندات لأنه إذا كان كل العطف ليست هي نفسها ثم فإنه ليس من الواضح ما هي النية.

أو في سهل الانجليزية...

  • إنه من الواضح ما findAllByYearAndMonthAndDay(1999,2,3) يعني
  • الواضح أيضا ما findAllByYearOrMonthOrDay(1999,2,3) يعني
  • ولكن ليس من الواضح ما findAllByYearOrMonthAndDay(1999,2,3) يعني

ومع ذلك ، إذا كان كل العطف هي نفس (كل ands أو كل ors), ثم لا يوجد أي سبب لماذا أكثر من 2 المسندات لا يمكن أن تكون معتمدة.في الواقع, إذا كنت البحث على الكؤوس جيرة ستجد هناك بالفعل قضية مفتوحة من أجل هذا.التصويت لذلك إذا كنت أشعر بقوة حول هذا الموضوع.

بالمناسبة ، IntelliJ الكؤوس المساعد خطأ تنص على إنجاز قانون الحيوية المكتشفون مع أكثر من 2 المسندات.

الحل/الحل ببساطة كتابة معايير الاستعلام أو استخدام HQL بدلا من ذلك.

نصائح أخرى

لا, ليس حاليا.انها محدودة إلى 2 شروط في هذه اللحظة.أكثر من 2 نظرة على معايير البناء أو findAllWhere الأساليب.

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