我是hibernate的新手,我正试图从4个表中列出一个列表, 但它不起作用。
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();
}
也许是JOIN部分,不知道我应该使用INNER,LEFT还是只是JOIN
我想创建一个像这样的SQL
的hql SELECT docass.id_documento_assinante,doc.id,
docass.id_user_depto,u.id,u.nome
FROM DCF_DOCUMENTO_ASSINANTE as docass
JOIN DCF_CONTENT as doc ON doc.id = docass.id_documento
JOIN DCF_USUARIO_DEPARTAMENTO as userDep ON userDep.id = docass.id_user_depto
JOIN DCF_USUARIOS as u ON u.id = userDep.id_usuario
WHERE u.id_anexo_assinatura is null
答案 0 :(得分:0)
首先你的问题没有完全清除,首先在这里定义你的数据库模型,从你的查询我已经知道
hql.append(" DOC.id, ");
这里不会添加最后一个昏迷 hql.append(“DOC.id”);
下面
hql.append(" FROM ").append(DocumentoAssinanteTO.class.getName()).append(" DA ");
你不需要通过调用class.getname()方法来获取类的名称,你只需要调用bean的bean或名称。
你内部联接中存在很多问题。
答案 1 :(得分:0)
好的,我让它工作了,做了一些调整
public List listAssinanteSemImagemByDocument(DocumentoTO documento){ StringBuilder hql = new StringBuilder(); hql.append(&#34; SELECT DA.id,&#34;); hql.append(&#34; DOC.id,&#34;); hql.append(&#34; UD.id,&#34;); hql.append(&#34; U.id,&#34;); hql.append(&#34; U.nome&#34;); hql.append(&#34; FROM&#34;)。append(DocumentoAssinanteTO.class.getName())。append(&#34; DA&#34;); hql.append(&#34; JOIN DA.documento DOC&#34;); hql.append(&#34; JOIN DA.usuarioDepartamento UD&#34;); hql.append(&#34; JOIN UD.usuario U&#34;); hql.append(&#34; WHERE DOC =:idDocumento&#34;); hql.append(&#34; AND U.assinatura IS NULL&#34;);
Query query = queryTransform(hql.toString());
query.setLong("idDocumento", documento.getId());
return query.list();
}
真正的问题在这里是最后一个逗号。和合
hql.append(&#34; U.nome,&#34;);