سؤال

أنا مطور تطبيق إطار اللعب.أنا باستخدام طريقة كريتيناتيفيكري في جبا.في هذا المثال أريد استخدام البيان المعد.الرجاء أي شخص مساعدتي?هنا هو رمز دون جبا.أحتاج إلى مساعدة لتحويله إلى بيان معد.

Query query = JPA.em().createNativeQuery("select count(*) from truck t inner join" +
    "box b where t.truck_id=b.truck_id and t.shipment_upc='" + code + "'");

BigInteger val = (BigInteger)query.getSingleResult();
System.out.println(val);
هل كانت مفيدة؟

المحلول

giveacodicetagpre.

نصائح أخرى

موجز موجز

تحتاج إلى استخدام معلمات الاستعلام هنا ، ولكن بما أنك تستخدم ملف الاستعلام الأصلي, ، قد تكون محدودة في الخيارات الخاصة بك مقارنة مع جبكل.

حالة العالم

قد تكون تقتصر على المعلمات الموضعية:

جبا لا يتطلب الاستعلامات الأصلية دعم المعلمات اسمه ، ولكن بعض مقدمي جبا قد

تنفيذ السبات من جبا يدعم المعلمات المسماة:

استعلامات سكل الأصلية تدعم الموضعية وكذلك المعلمات المسماة


الحل

السبات

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

سوف أكرر ذلك هنا من أجل المقارنة:

Query query = JPA.em().createNativeQuery(
"SELECT COUNT(*) "+
"FROM truck AS t "+
"INNER JOIN box b "+
"WHERE t.truck_id = b.truck_id "+
"AND t.shipment_upc = :code"
);
query.setParameter("code", code);

جبا عام (بما في ذلك إكليبسلينك)

لقد وجدت أنه مع إكليبسلينك (2.5.1) ، لم يتم دعم المعلمات المسماة.

بدلا من ذلك ، يصبح من الضروري استخدام المعلمات الموضعية.يمكن التعبير عن هذه بطريقتين-صراحة وضمنا.

فهرس صريح

ضع علامة على المعلمة باستخدام ?1 (أو رقم آخر).يمكن استخدام هذا الفهرس لتحديد تلك المعلمة المعينة بشكل فريد في استعلامك.

Query query = JPA.em().createNativeQuery(
"SELECT COUNT(*) "+
"FROM truck AS t "+
"INNER JOIN box b "+
"WHERE t.truck_id = b.truck_id "+
"AND t.shipment_upc = ?1"
);
query.setParameter(1, code);

مؤشر ضمني

ضع علامة على المعلمة باستخدام فقط ?.سيعتمد فهرسه على تسلسل جميع المعلمات المشاركة في سلسلة الاستعلام الخاصة بك.

Query query = JPA.em().createNativeQuery(
"SELECT COUNT(*) "+
"FROM truck AS t "+
"INNER JOIN box b "+
"WHERE t.truck_id = b.truck_id "+
"AND t.shipment_upc = ?"
);
query.setParameter(1, code);

الحواشي

لاحظ أن:

  • المعلمات الموضعية هي 1 مفهرسة.
  • المفتاح في Query خريطة المعلمة هي ببساطة فهرس المعلمة الموضعية.

مصادر إضافية

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