Java HQL休眠许多表
我是新来hibernate的,我试着从4张表中列出一个列表, 但它不起作用Java HQL休眠许多表,java,hibernate,hql,Java,Hibernate,Hql,我是新来hibernate的,我试着从4张表中列出一个列表, 但它不起作用 public List<DocumentoAssinanteTO> listAssinanteSemImagemByDocument(DocumentoTO documento, UsuarioDepartamentoTO ud) { StringBuilder hql = new StringBuilder(); hql.append(" SELECT DA.id, "); hql.
public List<DocumentoAssinanteTO> listAssinanteSemImagemByDocument(DocumentoTO documento, UsuarioDepartamentoTO ud) {
StringBuilder hql = new StringBuilder();
hql.append(" SELECT DA.id, ");
hql.append(" DOC.id,");
hql.append(" UD.id, ");
hql.append(" D.id, ");
hql.append(" U.id, ");
hql.append(" U.nome,");
hql.append(" FROM ").append(DocumentoAssinanteTO.class.getName()).append(" DA ");
hql.append(" INNER JOIN DA.documento DOC ");
hql.append(" INNER JOIN DA.usuarioDepartamento UD ");
hql.append(" INNER JOIN UD.usuario U");
hql.append(" INNER JOIN UD.departamento D");
hql.append(" WHERE DOC = :idDocumento AND UD = :idUserDep ");
hql.append(" AND U.assinatura IS NULL ");
Query query = queryTransform(hql.toString());
query.setLong("idDocumento", documento.getId());
query.setLong("idUserDep", ud.getId());
return query.list();
}
首先,您的问题还没有完全解决,请首先在这里定义您的数据库模型,从您的查询中我知道了这一点
hql.append(" DOC.id, ");
最后一次昏迷将不在此处添加
hql.append DOC.id
这里
您不需要通过调用class.getname方法来获取类名,您只需在这里调用bean或模型名即可
你的内部连接有很多问题。好的,我让它工作了,做了一些调整 公共列表列表助理ESEMImageByDocument文档To documento{ StringBuilder hql=新的StringBuilder; hql.append选择DA.id; hql.append DOC.id,; hql.append UD.id; hql.append U.id; hql.U.nome; hql.append FROM.appendDocumentoAssinanteTO.class.getName.append DA; hql.append JOIN DA.documento DOC; hql.append JOIN DA.usuariodepartmento UD; hql.append加入UD.usuario U; hql.append,其中DOC=:idDocumento; hql.append和U.assinatura为空
Query query = queryTransform(hql.toString());
query.setLong("idDocumento", documento.getId());
return query.list();
}
真正的问题是这里的最后一个逗号。呵呵
hql.append U.nome,;连接解释:由于它不是本机查询,您是否先在sql server中以本机形式尝试了它,以查看它是否正在运行??原因连接+hql我以前遇到过问题您的文档可能是一个对象,您将其与收到的long.Post错误进行比较。此外,如果您向我提供了架构和模型的结构,请名称如果您使用JPA或Hibernate,我会发现很好的帮助您
hql.append(" FROM ").append(DocumentoAssinanteTO.class.getName()).append(" DA ");
Query query = queryTransform(hql.toString());
query.setLong("idDocumento", documento.getId());
return query.list();
}