Pouvons-nous concaténer deux propriétés dans la requête Hibernate HQL?

disons que j'ai un tableau avec deux colonnes firstname et lastname avec String datatype. Normalement j'écris ma requête hql comme

"select firstname,lastname from contact"

puis-je écrire une requête hql qui concaténate les deux propriétés ?

Peut-être quelque chose comme "select firstname+lastname as fullname from Contact"

23
demandé sur abiieez 2013-07-28 20:40:04

4 réponses

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

ou, si vous voulez un séparateur:

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

Voir la documentation.

37
répondu JB Nizet 2013-07-28 16:58:04

Vous pouvez créer une colonne calculée dans votre entité:

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

et dans votre HQL vous vous référez juste à ce champ comme vous le feriez à n'importe quel autre.

dans votre cas, vous pouvez faire:

"select fullName from Contact"
17
répondu martins.tuga 2015-05-22 01:08:39

je l'ai fait en sorte avec 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();}
3
répondu Dosi Bingov 2014-10-30 09:35:20

Vous pouvez également utiliser || l'opérateur de concaténation:

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

bien que cela puisse être confus à lire.

2
répondu Radek Wroblewski 2016-03-16 09:40:34