Ответ 1
select concat(c.firstname, c.lastname) as fullname from Contact c
или, если вы хотите разделитель:
select concat(c.firstname, ' ', c.lastname) as fullname from Contact c
См. документацию.
Предположим, что у меня есть одна таблица с двумя столбцами firstname
и lastname
с типом данных String. Обычно я пишу свой запрос hql, например
"select firstname,lastname from contact"
Можно ли написать запрос hql, который объединяет оба свойства?
Возможно, что-то вроде "select firstname+lastname as fullname from Contact"
select concat(c.firstname, c.lastname) as fullname from Contact c
или, если вы хотите разделитель:
select concat(c.firstname, ' ', c.lastname) as fullname from Contact c
См. документацию.
Вы можете создать вычисляемый столбец в своей сущности:
@Formula(value = " concat(first_name, ' ', last_name) ")
private String fullName;
И в вашем HQL вы просто ссылаетесь на это поле, как и на любое другое.
В вашем случае вы можете:
"select fullName from Contact"
Я сделал это так с hql
public List<Contract> findContracts(String fullName) {
Query q = sessionFactory.getCurrentSession().createQuery("from Contract c where :fullName = concat(c.firstname, ' ', c.lastname)");
q.setString("fullName", fullName);
return q.list();}
Вы также можете использовать || оператор конкатенации:
"select c.firstName || ' ' || c.lastName as fullName from Contact"
хотя это может ввести в заблуждение.