org.hibernate.NonUniqueResultException: query did not return a unique result: 2

<span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span>
org.hibernate.NonUniqueResultException: query did not return a unique result: 2


错误原因session.createQuery(hql).uniqueResult()代码导致的,当查询的结果集中的数据条数大于1的时候使用uniqueResult()方法就会出现该异常。


解决方法:

方法1.使用query.List()
例如:

public boolean isExists(String Userid) {
		Session session = sessionFactory.getCurrentSession();
		Transaction ts = session.beginTransaction();
		String hql = "from User where userId =?";
		Query query = session.createQuery(hql);
		query.setParameter(0, Userid);
		
			List<User> list = query.list();
			ts.commit();
			if (list.size>0)
				return true;
			else
				return false;
		

	}



方法2.把数据库中的数据改成非唯一的(这个一般没法保证)。

方法3.try{}catch{}捕获进行相应的异常处理。

例如:

public boolean isExists(String Userid) {
		Session session = sessionFactory.getCurrentSession();
		Transaction ts = session.beginTransaction();
		String hql = "from User where userId =?";
		Query query = session.createQuery(hql);
		query.setParameter(0, Userid);
		try {
			User user = (User) query.uniqueResult();
			ts.commit();
			if (user != null)
				return true;
			else
				return false;
		} catch (HibernateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}

	}


你可能感兴趣的:(org.hibernate.NonUniqueResultException: query did not return a unique result: 2)