我们可以在Hibernate HQL查询中连接两个属性吗?

时间:2013-07-28 16:40:05

标签: hibernate

假设我有一个表有两列firstnamelastname的String数据类型。通常我会编写像

这样的hql查询
"select firstname,lastname from contact"

我可以编写一个连接两个属性的hql查询吗?

也许像"select firstname+lastname as fullname from Contact"

4 个答案:

答案 0 :(得分:40)

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

或者,如果你想要一个分隔符:

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

请参阅the documentation

答案 1 :(得分:17)

您可以在实体中创建计算列:

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

在您的HQL中,您可以像对待任何其他人一样参考此字段。

在您的情况下,您可以这样做:

"select fullName from Contact"

答案 2 :(得分: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();}

答案 3 :(得分:2)

您也可以使用||连接运算符:

let myclassa = new MyClassA(), myclassb = new MyClassB();
export {myclassa, myclassb, MyClassC};
尽管阅读可能会令人困惑。