【发布时间】:2016-09-09 08:46:36
【问题描述】:
如何根据唯一列选择行。 在我的表中,Id 是自动生成的。我正在使用电话号码来选择我的表架构中唯一的行。
例如:
Id Phone Name
1 2209897 abc
2 5436567 def
这里,Id 是主键。 电话是独一无二的。
我正在使用手机登录。 我不希望生成一个列表,而是生成单行作为输出。
@Repository
public class CustomerDetailsDAOImpl implements CustomerDetailsDAO {
@Autowired
SessionFactory sessionFactory;
@Override
@Transactional
public List<CustomerDetails> getCustomer(String customerPhone) {
Session session = sessionFactory.openSession();
Query q = session.createQuery("from CustomerDetails where customerPhone =:p");
q.setParameter("p", customerPhone);
List<CustomerDetails> customer = q.getResultList();
session.close();
return customer;
}
【问题讨论】:
-
不要使用
List,只使用CustomerDetails customer = q.getResultList();,如果:p返回超过1行那么你会得到一个ResultSizeException,但是如果数据库中的所有电话号码都是当然是独一无二的,那么您应该没有任何问题。 -
@px06 可能您打算建议使用 q.getResultList() 以外的方法。
-
@Gimby 对不起,你是对的。应该是:
List<CustomerDetails> getList = q.getResultList(); Customer customer = getList.get(0);