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

时间:2013-07-24 04:07:48

标签: hibernate java-ee

我需要验证数据库中是否存在记录,但无论我传递给以下代码的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("<");
      }

4 个答案:

答案 0 :(得分: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");
   }

答案 1 :(得分: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
}

答案 2 :(得分: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");
 }

答案 3 :(得分:-1)

如果您有EntityManager实例 那你可以做。

entityManager.find(Users.class, 1002L);

第二个参数是记录的主键ID。

如果没有记录,

将返回null。 如果无法推断/无法识别primaryKey,将抛出IllegalArgumentException。