Gostaria de saber como faço esse Sql em Hql ou Criteria se alguém ai puder me ajudar
Sql em anexo:
select
seriedisciplina.codserie, turma.codturma, matricula.codturma, seriedisciplina.coddisciplina, disciplina.coddisciplina,
formaperiodo.codserie, serie.codserie, formaperiodo.codformaperiodo, turma.codformaperiodo, matricula.codaluno,
aluno.codaluno, aluno.descraluno, disciplina.descrdisciplina,
(select nota from Avaliacao where
avaliacao.codaluno = aluno.codaluno and
avaliacao.codcalendario = 4 and
avaliacao.codescolapref = 1 and
avaliacao.coddisciplina = disciplina.coddisciplina and
avaliacao.codformaperiodoitem = 1 and
avaliacao.codserie = serie.codserie and
avaliacao.codturma = turma.codturma) as nota
from
disciplina, matricula, turma, formaperiodo, serie, seriedisciplina, aluno
where
matricula.codturma = turma.codturma AND matricula.codaluno = aluno.codaluno AND formaperiodo.codserie = serie.codserie AND
formaperiodo.codformaperiodo = turma.codformaperiodo AND serie.codserie = seriedisciplina.codserie AND
seriedisciplina.coddisciplina = disciplina.coddisciplina;
As Classes envolvidas seriam as do From do sql nativo acima.
Se alguém puder ajudar ficarei grato.
É melhor você colocar a sua dificuldade. O que vc sabe sobre HQL/SQL/Criteria?
Para te ajudar melhor, coloca pra gente algum código que vc já tenha feito.
Estamos aqui para ajudar, mas se fizermos para vc qual aprendizado vc teria?
Eu uso Hql e Criteria mas algo bem superficial ( básico diria ) sempre tenho dificuldade quando se trata de colocar uma SubQuerie ou fazer algum inner join.
Meu conhecimentos a mais são ( o que trabalho atualmente ) Flex 3, Flash Builder, Java, Postgres. Se puder me dar um caminho para eu ver, algum exemplo eu me viro, se me expressei mal desculpem ai, mas nao era intenção pedir o código pronto “mamão com açucar”.
@SuppressWarnings("unchecked")
@Override
public List<Pedido> listar() {
Query query = this.getSession().createQuery("from Pedido " +
" where nrpedido between 20430 and 20460 order by nrpedido");
return query.list();
}
[quote=borellametal]
[code]@SuppressWarnings(“unchecked”) @Override
public List<Pedido> listar() {
Query query = this.getSession().createQuery(“from Pedido " +
" where nrpedido between 20430 and 20460 order by nrpedido”);
return query.list();
}
[/code]
Abraço[/quote]haha, fica tranqs. Tem ninguém aqui brigando não! =D
Olha só, tenta montar a sua query em cima dessa aí! A passagem de parâmetros vc pode fazer assim. where nrpedido between 20430 and 20460 order by nrpedido
// Seria
where nrpedido between :valorInicial and :valorFinal order by nrpedido Caso não funcione a query que vc montar, coloca a dúvida aí. Estamos aqui para ajudar! [=
Bom dia Helbert, sua iniciativa e participação aqui no GUJ são ótimas sempre acompanho, até adquiri um livro seu.
Estou com uma dificuldade parecida com a postada, tenho um conhecimento relativamente bom em SQL porém em HQL sou novato
Fiz um SQL que retorna digamos que seja a quantidade em estoque - a quantidade que já comprei
O SQL será apresentado à seguir.
SELECT i.id, i.produto_id, i.lote_id, i.quantidade,
i.quantidade -
Coalesce (( select compraItem.quantidade
from Compra compra left outer join Compra_item compraItem on (compra.id = compraItem.compra_id)
where compra.licitacao_id = l.licitacao_id
and compra.fornecedor_id = l.fornecedor_id
and compraItem.produto_id = i.produto_id
and compraItem.lote_id = i.lote_id
) , 0 )
FROM licitacao_itens i left outer join licitacao_lote l on (l.id = i.lote_id)
where l.licitacao_id = 1
Agora postarei o código HQL
@NamedQuery(name = "produtosPeloLoteLicitacao", query = "select item.id, item.produto, item.valorUnitario, item.valorTotal, "+
" item.quantidade - "+
" ( select compraItem.quantidade "+
" from Compra as compra left join CompraItem as compraItem "+
" where compra.licitacao.id = licitacao.id "+
" and compra.fornecedor.id = lote.fornecedor.id "+
" and compraItem.produto.id = item.produto.id "+
" and compraItem.lote.id = lote.id "+
" ) "+
" from Licitacao as licitacao left join licitacao.lotes as lote "+
" left join lote.itens as item "+
" left join item.produto as produto "+
" where licitacao.id = :idLicitacao "+
" and lote.fornecedor.id = :idFornecedor ")