Подтвердить что ты не робот

Можем ли мы объединить два свойства в Hibernate HQL-запросе?

Предположим, что у меня есть одна таблица с двумя столбцами firstname и lastname с типом данных String. Обычно я пишу свой запрос hql, например

"select firstname,lastname from contact"

Можно ли написать запрос hql, который объединяет оба свойства?

Возможно, что-то вроде "select firstname+lastname as fullname from Contact"

4b9b3361

Ответ 1

select concat(c.firstname, c.lastname) as fullname from Contact c

или, если вы хотите разделитель:

select concat(c.firstname, ' ', c.lastname) as fullname from Contact c

См. документацию.

Ответ 2

Вы можете создать вычисляемый столбец в своей сущности:

@Formula(value = " concat(first_name, ' ', last_name) ")
private String fullName;

И в вашем HQL вы просто ссылаетесь на это поле, как и на любое другое.

В вашем случае вы можете:

"select fullName from Contact"

Ответ 3

Я сделал это так с 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();}

Ответ 4

Вы также можете использовать || оператор конкатенации:

"select c.firstName || ' ' || c.lastName as fullName from Contact"

хотя это может ввести в заблуждение.