উত্তর:
হাইবারনেট (<5.2) এর পুরানো সংস্করণগুলির জন্য:
শ্রেণীর নাম গ্রন্থটি ধরে নেওয়া:
return (Number) session.createCriteria("Book")
.setProjection(Projections.rowCount())
.uniqueResult();
এটি কমপক্ষে একটি Number, সম্ভবত এ Long।
return (Number) session.createCriteria(Book.class).setProjection(Projections.rowCount()).uniqueResult();
জাভাতে আমার সাধারণত ফিরে আসা এবং এই ফর্মটি ব্যবহার করতে হবে:
int count = ((Long)getSession().createQuery("select count(*) from Book").uniqueResult()).intValue();
এখানে কি সরকারী হাইবারনেট ডক্স বলতে আমাদের এই সম্পর্কে:
আপনি কোয়েরির ফলাফলগুলি না দিয়েই তাদের সংখ্যা গণনা করতে পারেন:
( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()
তবে এটি সর্বদা Integerনজরে আসে না , তাই java.lang.Numberসুরক্ষার জন্য ব্যবহার করা ভাল ।
org.hibernate.dialect.function.StandardAnsiSqlAggregationFunctions.CountFunction
আপনি চেষ্টা করতে পারেন count(*)
Integer count = (Integer) session.createQuery("select count(*) from Books").uniqueResult();
Booksনামটি কোথায় বন্ধ class- ডাটাবেসে সারণী নয়।
আপনি যদি হাইবারনেট 5+ ব্যবহার করেন তবে ক্যোয়ারী হিসাবে সংশোধন করা হবে
Long count = session.createQuery("select count(1) from Book")
.getSingleResult();
অথবা আপনার যদি টাইপকুইয়ের প্রয়োজন হয়
Long count = session.createQuery("select count(1) from Book",Long.class)
.getSingleResult();
Long count = (Long) session.createQuery("select count(*) from Book").uniqueResult();
এটি হাইবারনেট 4 (পরীক্ষিত) এ কাজ করে।
String hql="select count(*) from Book";
Query query= getCurrentSession().createQuery(hql);
Long count=(Long) query.uniqueResult();
return count;
গেটকন্টারসেশন () কোথায়:
@Autowired
private SessionFactory sessionFactory;
private Session getCurrentSession(){
return sessionFactory.getCurrentSession();
}
এটি খুব সহজ, কেবল নিম্নলিখিত JPQL কোয়েরিটি চালান:
int count = (
(Number)
entityManager
.createQuery(
"select count(b) " +
"from Book b")
.getSingleResult()
).intValue();
আমরা কাস্টিংয়ের কারণটি Numberহ'ল কিছু ডাটাবেস ফিরে আসবে Longযখন অন্যেরা ফিরে আসবে BigInteger, সুতরাং বহনযোগ্যতার জন্য আপনি কয়টি সারি গণনা করবেন তার উপর নির্ভর করে আপনি একটিতে কাস্টিং Numberএবং একটি intবা একটি পাওয়ার চেয়ে ভাল long।