Mysql hibernate查询,用于获取带有连接的json键值对

Mysql hibernate查询,用于获取带有连接的json键值对,mysql,json,rest,hql,Mysql,Json,Rest,Hql,我正在使用REST,hibernate查询语言从数据库中获取一些数据,在该查询中,我需要从两个或多个表中获取列,并获取结果记录,当我通过REST以json形式返回该对象时,我将以如下格式获取json {table1col1value,table2col1value,table3colvalue,table1col2value,table2col2value} 但是我需要获得以下格式的json数据 {table1colname1:table1col1value,table2colname:tabl

我正在使用REST,hibernate查询语言从数据库中获取一些数据,在该查询中,我需要从两个或多个表中获取列,并获取结果记录,当我通过REST以json形式返回该对象时,我将以如下格式获取json

{table1col1value,table2col1value,table3colvalue,table1col2value,table2col2value}

但是我需要获得以下格式的json数据

{table1colname1:table1col1value,table2colname:table2col1value,table1colname:table3colvalue,table1colname:table1col2value,table2colname:table2col2value}

为此,我使用以下代码,它的工作很好,但它与sql查询只工作,我需要它在HQL,请帮助我在这方面

 @Override
@Transactional
public List<Map<String,Object>> getMixProperties(List<String> keys,Set<String> s) {
    StringBuilder sb = new StringBuilder();
    sb.append("select ");
    Iterator<String> i = keys.iterator();
    int q = keys.size();
    while (i.hasNext()) {
        q=q-1;
        if(q==0){
            String n= i.next();
            sb.append(" "+n);
        }
        else{
            String n2= i.next();
            sb.append(" "+n2+",");}
    }
    sb.append(" from Book Book "
            + " join Systems Systems ON Systems.idSystems =Book.idSystems "
            + " join Machine Machine ON Machine.id =Systems.id ");
    /*Iterator<String> iterator = s.iterator();
    int q2 = s.size();String s5 = null;
    while(iterator.hasNext()) {
        String s4 = iterator.next();
        q2=q2-1;
        if(q2==0){
            sb.append(" "+s4+" "+s4);
        }
        else{
            s5=s4;
            sb.append(" "+s4+" "+s4+",");}
    }*/
    System.out.println("query "+sb);
    String sbb = sb.toString();
    Query query=sessionFactory.getCurrentSession().createSQLQuery(sbb);
    query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
    List<Map<String,Object>> aliasToValueMapList=query.list(); 
    return aliasToValueMapList;
}
在上面的代码列表中,键将是不同表的列名,集合s将是表名,但我在当前代码中没有使用它

即使这样,也只有在类和db表名称相同,属性和列名相同的情况下才有效,如果不相同,则不起作用

只有当我有pojo类时,我才能得到JSON,但在我的例子中,结果集可以是任意数量的列,因此它只取决于运行时,请在这方面帮助我