Java tutorial
/*** Copyright (c) 2012 - 2020 Hrcules S. S. Jos Este arquivo parte do programa Oramento Domstico. Oramento Domstico um software livre; voc pode redistribui-lo e/ou modific-lo dentro dos termos da Licena Pblica Geral Menor GNU como publicada pela Fundao do Software Livre (FSF); na verso 2.1 da Licena. Este programa distribudo na esperana que possa ser til, mas SEM NENHUMA GARANTIA; sem uma garantia implcita de ADEQUAO a qualquer MERCADO ou APLICAO EM PARTICULAR. Veja a Licena Pblica Geral Menor GNU em portugus para maiores detalhes. Voc deve ter recebido uma cpia da Licena Pblica Geral Menor GNU sob o nome de "LICENSE.TXT" junto com este programa, se no, acesse o site do projeto no endereco https://github.com/herculeshssj/orcamento ou escreva para a Fundao do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Para mais informaes sobre o programa Oramento Domstico e seu autor entre em contato pelo e-mail herculeshssj@outlook.com, ou ainda escreva para Hrcules S. S. Jos, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404, Marco II - Nova Iguau, RJ, Brasil. ***/ package br.com.hslife.orcamento.repository; import java.util.List; import org.hibernate.Criteria; import org.hibernate.FetchMode; import org.hibernate.Query; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Repository; import br.com.hslife.orcamento.entity.Despensa; import br.com.hslife.orcamento.entity.ItemDespensa; import br.com.hslife.orcamento.entity.UnidadeMedida; import br.com.hslife.orcamento.entity.Usuario; @Repository public class ItemDespensaRepository extends AbstractCRUDRepository<ItemDespensa> { public ItemDespensaRepository() { super(new ItemDespensa()); } @Override public ItemDespensa findById(Long id) { Criteria criteria = getSession().createCriteria(ItemDespensa.class).setFetchMode("movimentacao", FetchMode.JOIN); criteria.add(Restrictions.eq("id", id)); return (ItemDespensa) criteria.uniqueResult(); } @SuppressWarnings("unchecked") public List<ItemDespensa> findByDespensaUsuarioAndArquivado(Despensa despensa, Usuario usuario, boolean arquivado) { String hql = "select item from ItemDespensa as item inner join item.despensa as des where des.id = :idDespensa and des.usuario.id = :idUsuario and item.arquivado = :arquivado order by item.descricao asc"; Query query = getSession().createQuery(hql); query.setLong("idDespensa", despensa.getId()); query.setLong("idUsuario", usuario.getId()); query.setBoolean("arquivado", arquivado); return query.list(); } @SuppressWarnings("unchecked") public List<ItemDespensa> findByUsuarioAndArquivado(Usuario usuario, boolean arquivado) { String hql = "select item from ItemDespensa as item inner join item.despensa as des where des.usuario.id = :idUsuario and item.arquivado = :arquivado order by item.descricao asc"; Query query = getSession().createQuery(hql); query.setLong("idUsuario", usuario.getId()); query.setBoolean("arquivado", arquivado); return query.list(); } @SuppressWarnings("unchecked") public List<ItemDespensa> findAllPerecivelByUsuario(Usuario usuario) { String hql = "select item from ItemDespensa as item inner join item.despensa as des where des.usuario.id = :idUsuario and item.perecivel = :perecivel and item.arquivado = :arquivado order by item.descricao asc"; Query query = getSession().createQuery(hql); query.setLong("idUsuario", usuario.getId()); query.setBoolean("perecivel", true); query.setBoolean("arquivado", false); return query.list(); } @SuppressWarnings("unchecked") public List<ItemDespensa> findByDespensa(Despensa despensa) { Criteria criteria = getSession().createCriteria(ItemDespensa.class); criteria.add(Restrictions.eq("despensa.id", despensa.getId())); return criteria.list(); } @SuppressWarnings("unchecked") public List<ItemDespensa> findByUnidadeMedida(UnidadeMedida unidadeMedida) { Criteria criteria = getSession().createCriteria(ItemDespensa.class); criteria.add(Restrictions.eq("unidadeMedida.id", unidadeMedida.getId())); return criteria.list(); } }