Duvidas quanto ao HQL

[color=blue]Opa…

Sou novo na comu… estou com dúvidas quanto ao HQL… estou desenvolvendo uma aplicação J2EE usando Struts e Hibernate 3, usando o MySQL… preciso apenas selecionar alguns campos da Tabela do Banco, descrito abaixo

SELECT
usuario.id, usuario.nome,
usuario.username, usuario.cpf
FROM
UsuarioVo AS usuario

está correto ??

Aguardo Retorno…

Sds…

M a t t o s[/color]

[color=blue]
Neste caso q vc descreveu está pegando todas as colunas da tabela do banco… no caso quero apenas algumas…

De qualquer forma…

Agradeço…

Sds…

M a t t o s
[/color]

[color=blue]

public String montaQuery(UsuarioVo vo) {
StringBuffer hql = new StringBuffer();

hql.append("SELECT ");
hql.append("usuario.id, usuario.nome, usuario.username, usuario.cpf ");
hql.append("FROM ");
hql.append("UsuarioVo AS usuario");

if(vo.getNome() != null && !vo.getNome.equals("")){
hql.append("WHERE ");
hql.append(“usuario.nome LIKE '%” + vo.getNome() + “%’ “);
}
else if(vo.getCpf() != null && !vo.getCpf.equals(””)){
hql.append("WHERE ");
hql.append(“usuario.cpf = '” + vo.getCpf() + "’ ");
}
else if(vo.getPerfilVo().getId() != 0){
hql.append("WHERE ");
hql.append(“usuario.perfilVo.id = '” + vo.getPerfilVo().getId() + "’ ");
}

return hql.toString();

}

se o pião não digitar nenhum critério de pesquisa descrita acima, não entra na condição, e o HQL traz todos os registros do banco… Note-se q é um critério por vez…

PerfilVo é o tipo de usuario cadastrado - Administrador, Operador e Usuario

Automaticamente o Hibernate já faz o Join, então não preciso me preocupar fazendo isso no próprio HQL…

É relação 1:N

Se puder ajudar… agradeço…

Sds…

[/color]

Qual o motivo de voce querer apenas algumas colunas? O hibernate tem um belo cache de dados, e retornar o objeto inteiro nao costuma ser problema.

Rafael

Como disse no post anterior, ao menos que voce tenha um motivo muito forte, pege o objeto inteiro. Mas, caso queira de fato apenas uma ou outra propriedade, faca assim:

List usuarios = session.createQuery("select u.id, u.username, u.email from UserVO u").setResultTranformer(new AliasToBeanResultTransformer(UsuarioVO.class)).list();

Rafael

[color=blue]Pode crer…

então eu vou desconsiderar as colunas… Achava q isso era problema devido ter armazenamento de informações desnecessárias na memória…

Valeu pela dica…

Sds…

M a t t o s[/color]

Ha uma famosa frase que diz “Otimizacao prematura eh a raiz de todos os males”.

Ao menos que vc tenha um problema real de performance, nao tente fazer micro “otimizacoes” de antemao.

Rafael

query qr = session.createquery(“from Usuario”);

põe cláusula where ai