java - Select all beans where member variable condition is true -
मैं सभी व्यक्ति
ऑब्जेक्ट मुद्रित करना चाहूंगा जहां isFoo == true ।
PersonServlet
व्यक्ति
<पूर्व> @Entity सार्वजनिक वर्ग के व्यक्ति के लिए हालांकि मुझे नीचे कोड पूरा करने का तरीका नहीं है सीरियलज़ेबल {@Id @GeneratedValue निजी लांग आईडी; लागू करता है; निजी बूलियन फू; निजी बूलियन फूबार; सार्वजनिक व्यक्ति () {} सार्वजनिक व्यक्ति (बूलियन फू, बूलियन फूबर) {this.foo = foo; This.fooBar = fooBar; } सार्वजनिक लांग आईआईडी () {रिटर्न आईडी; } सार्वजनिक शून्य सेट आईडी (लांग आईडी) {this.id = id; } सार्वजनिक बूलियन getFoo () {रिटर्न foo; } सार्वजनिक शून्य सेटएफू (बूलियन एफू) {this.foo = foo; } सार्वजनिक बूलियन getFooBar () {वापसी fooBar; } सार्वजनिक शून्य सेटफूबार (बूलियन फूबर) {this.fooBar = fooBar; }}
PersonServlet
सार्वजनिक शून्य printAllFoo () {EntityManagerFactory ईएमएफ = (EntityManagerFactory) getServletContext ()। GetAttribute ( " ईएमएफ "); EntityManager em = emf.createEntityManager (); CriteriaBuilder cb = em.getCriteriaBuilder (); CriteriaQuery q = cb.createQuery (व्यक्ति.क्लास); रूट के & lt; व्यक्ति & gt; C = q.from (पर्सन। क्लास); q.select (ग); ParameterExpression & LT; बूलियन & gt; Foo = सीबी। पैरामीटर (बूलियन। वर्ग); // क्या इसके बजाय = सच होना चाहिए? ParameterExpression & LT; बूलियन & gt; FooBar = सीबी। पैरामीटर (बूलियन। वर्ग); // क्या इसके बजाय = झूठे होना चाहिए? q.where (cb.equal (c.get ( "foo"), cb.literal (सही)), cb.equal (c.get ( "foobar"), cb.literal (सही))); TypedQuery & LT; व्यक्ति & gt; क्वेरी = em.createQuery (q); Query.setParameter (foo, सच); Query.setParameter (fooBar, false); सूची के & lt; व्यक्ति & gt; FooPersons = query.getResultList (); System.out.println ("fooPersons:" + fooPersons); }
वर्तमान में क्या छपाया जा रहा है:
fooPersons: []
हालांकि कई हैं डेटाबेस में प्रविष्टियों:
web.application.bean.Person@50d420eb web.application.bean.Person@16bd4dc2 web.application.bean.Person@663c0737 web.application.bean .Person @ 6efde050 web.application.bean.Person@5d91dd1d web.application.bean.Person@134bcae9 web.application.bean.Person@54f690e4 web.application.bean.Person@7a29450 web.application.bean.Person@42b7141a वेब .application.bean.Person @ 188d92e web.application.bean.Person@3f6a5bcb web.application.bean.Person@5fb08cf3 web.application.bean.Person@3ff5d699 web.application.bean.Person@24dbf79d web.application.bean। व्यक्ति @ 655d7752
का प्रयास करें:
< कोड> टाइप किया गया & lt; व्यक्ति & gt; क्वेरी = em.createQuery (q); Query.setParameter (foo, सच); Query.setParameter (fooBar, false); सूची के & lt; व्यक्ति & gt; FooPersons = query.getResultList ();
मापदंडों को शाब्दिक रूप से प्रतिस्थापित किया जा सकता है, जैसे:
cb.equal (c.get ("isFoo"), cb.literal (सत्य) );
Comments
Post a Comment