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