假设我有一个包含两列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();}