Duvidas quanto ao HQL

8 respostas
Weslley

[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]

8 Respostas

Weslley

[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]

Weslley

[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(“<a href="http://usuario.perfilVo.id">usuario.perfilVo.id</a> = '” + 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]

Rafael_Steil

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

Rafael_Steil

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

Weslley

[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]

Rafael_Steil

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

berdam

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

berdam

põe cláusula where ai

Criado 1 de agosto de 2008
Ultima resposta 1 de ago. de 2008
Respostas 8
Participantes 3