假设我有一个含有两列firstname
和lastname
的表格,数据类型为字符串。通常情况下,我会按照以下方式编写我的HQL查询:
"select firstname,lastname from contact"
我可以编写一个HQL查询来拼接两个属性吗?
可能是像这样的 "select firstname+lastname as fullname from Contact"
假设我有一个含有两列firstname
和lastname
的表格,数据类型为字符串。通常情况下,我会按照以下方式编写我的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"
"select c.firstName || ' ' || c.lastName as 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();}
公共字符串 getname(){返回 first_name+last_name;}
使用此方法将会看到答案