উত্তর:
হাইবারনেট (<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
।