如何验证数据库中是否存在记录?

问题描述 投票:0回答:3

我需要验证数据库中是否存在记录,但无论我传递给以下代码的id如何,它都不会显示任何内容。记录是否存在。

       session = HibernateUtil.getSession();
        session.beginTransaction();
        Query q = session.createQuery("select count(*) from Users where id = :id");
        q.setInteger("id", id);
        Integer count = (Integer)q.uniqueResult();
        if(count > 0) {
            System.err.println(">");
        }
        else {
            System.err.println("<");
        }
        session.getTransaction().commit();
        session.close();

我也使用了以下代码,但仍然有同样的问题

  try{
        session = HibernateUtil.getSession();
        session.beginTransaction();
        Users users = null;
        users = (Users) session.load(Users.class, id);
    }catch(Exception e){
              System.err.println("<");
      }
hibernate java-ee
3个回答
8
投票

尝试使用投影来获得结果。

    session = sessionFactory.openSession();
    session.beginTransaction();
    Criteria criteria = session.createCriteria(Users.class);
    criteria.add(Restrictions.eq("Id", Id));
    criteria.setProjection(Projections.rowCount());
    long count = (Long) criteria.uniqueResult();
    session.getTransaction().commit();
   if(count != 0){
       System.out.println("present");
   else{
       System.out.println("absent");
   }

0
投票

你可以简单地使用Session.load方法,如果不存在,将抛出HibernateException

Session session = // get session..
Users u = null;
try {
  u = (Users) session.load(Users.class, userId);
} catch (HibernateException e) {
  // No Users with id 'userId' exists
}

0
投票

使用session.get方法,并在这种情况下仅使用异常

 try
   {s = (student) session1.get(student.class, 16);
   System.out.println("the result is"+s.marks);
   } 


 catch(Exception e)
   {

    System.out.println("none");
 }
© www.soinside.com 2019 - 2024. All rights reserved.