Как выбрать строку на основе уникального столбца. В моей таблице идентификатор сгенерирован автоматически. Я использую номер телефона, чтобы выбрать строку, которая уникальна в моей схеме таблицы.HQL Select Query
Ex:
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 клиент = q.getResultList(); ', если': p' возвращает более чем на 1 строку, то вы получить 'ResultSizeException', но если все номера телефонов в базе данных, безусловно, уникальны, то у вас не должно быть никаких проблем. – px06
@ px06 Возможно, вы намеревались рекомендовать использовать другой метод, отличный от q.getResultList(). – Gimby
@Gimby Извините, вы правы. Это должно быть: 'List getList = q.getResultList(); Клиент: = getList.get (0); ' –
px06