<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "Como posso fazer utilizando Criteria?"]]></title>
		<link>http://www.guj.com.br/posts/list/22.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "Como posso fazer utilizando Criteria?"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Como posso fazer utilizando Criteria?</title>
				<description><![CDATA[ Pessoal,<br /> <br /> Tenho uma entidade LancamentoVenda cujos registros no banco de dados não são alterados ou excluídos para possibilitar relatórios retroativos. A alteração gera uma nova inclusão e a exclusão preenche a propriedade dataCancelamento. <br /> <br /> [code]<br /> public class LancamentoVenda extends MappedEntity {<br /> <br /> 	private static final long serialVersionUID = -1730542112663270459L;<br /> 	<br /> 	private Integer numeroLancamento;<br /> 	<br /> 	private Date dataEmissao;<br /> 	<br /> 	private Date dataCompetencia;<br /> 	<br /> 	private String observacao;<br /> 	<br /> 	private Double valorLiquido;<br /> 	<br /> 	private Date dataOperacao;<br /> 	<br /> 	private UsuarioSIG responsavel;<br /> 	<br /> 	private Faturamento faturamento;<br /> 	<br /> 	private List&lt;ParcelaLancamentoVenda&gt; listaParcela;<br /> 	<br /> 	private List&lt;RateioLancamentoVenda&gt; listaRateio;<br /> 	<br /> 	private List&lt;RetencaoLancamentoVenda&gt; listaRetencao;<br /> 	<br /> 	private List&lt;DeducaoLancamentoVenda&gt; listaDeducao;<br /> <br /> 	private Date dataCancelamento; <br />         <br />         ...<br /> }<br /> [/code]<br /> <br /> Com isso eu teria no banco de dados no caso de um lançamento de venda Nº [b]622009[/b] ter sido alterado, duas tuplas:<br /> <br /> [b]<br /> NUMG_LancamentoVenda, NUMR_Versao, NUMR_Lancamento,, DATA_Emissao, VALR_Liquido, DATA_Ocorrencia<br /> 62,	                              1,           	   622009,	               2008-12-16,      9344.47,	  2009-01-09 15:54:32<br /> 63,	                              1,          	   622009,	               2008-12-16,      1000.47,	  2009-01-10 16:30:00<br /> [/b]<br /> <br /> O que ocorre é que preciso buscar todos os lançamentos de venda em um determinado período. E tenho que pegar<br /> as cópias mais recentes. No exemplo acima a segunda linha seria retornada pois a DATA_Ocorrencia (que controla a data de gravação da tupla) é maior.<br /> <br /> Gostaria de saber se seria possível fazer isso utilizando-se criteria. Atualmente utilizamos SQL puro usando o addEntity do SQLQuery para converter as tuplas retornadas nas entidades correspondentes, como este outro exemplo:<br /> [code]<br /> 			sql.append("if object_id('tempdb..#temp') &gt; 0 drop table #temp ");<br /> 			sql.append("select top 1 ");<br /> 			sql.append("pa.NUMG_Parametrizacao ");<br /> 			sql.append("into #temp ");<br /> 			sql.append("from ");<br /> 			sql.append("dbo.orc_Parametrizacoes pa ");<br /> 			sql.append("where ");<br /> 			sql.append("pa.NUMG_Empresa = ? and pa.NUMG_ParametrizacaoTipo = 3 ");<br /> 			sql.append("order by ");<br /> 			sql.append("pa.DATA_Parametrizacao DESC ");<br /> 			sql.append("select ca.*,co.* ");<br /> 			sql.append("from ");<br /> 			sql.append("#temp t ");<br /> 			sql.append("inner join dbo.colParametrizacoesDespesasContasSinteticas col on t.NUMG_Parametrizacao = col.NUMG_Parametrizacao ");<br /> 			sql.append("inner join dbo.fin_ContasAnaliticas ca on ca.NUMG_ContaSintetica = col.NUMG_ContaSintetica ");<br /> 			sql.append("inner join dbo.fin_Contas co on co.NUMG_Conta = ca.NUMG_ContaAnalitica ");<br /> 			sql.append("inner join dbo.fin_ContasDescricao cd on co.NUMG_ContaDescricao = cd.NUMG_ContaDescricao ");<br /> 			sql.append("where cd.DESC_ContaDescricao like ? ");<br /> 			sql.append("order by cd.DESC_ContaDescricao ");<br /> <br /> 			return getSession().createSQLQuery(sql.toString()).addEntity(ContaAnalitica.class).setLong(0, empresa.getId()).setString(1, "%" + descricao + "%").list();<br /> [/code]<br /> <br /> Mas gostaria de trabalhar com criteria pois gosto muito da forma como o código fica organizado e toda vez que tenho este tipo de problema, como uma subquerie, tenho que recorrer ao velho SQL.<br /> <br /> Desde já agradeço a atenção dispensada.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/114591/619663.java</guid>
				<link>http://www.guj.com.br/posts/preList/114591/619663.java</link>
				<pubDate><![CDATA[Fri, 9 Jan 2009 16:21:19]]> GMT</pubDate>
				<author><![CDATA[ braudes]]></author>
			</item>
			<item>
				<title>Re:Como posso fazer utilizando Criteria?</title>
				<description><![CDATA[ <a class="snap_shots" href="http://blog.dclick.com.br/2008/10/09/hibernate-criteria-com-subquery/pt/" target="_blank" rel="nofollow">http://blog.dclick.com.br/2008/10/09/hibernate-criteria-com-subquery/pt/</a>]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/114591/619694.java</guid>
				<link>http://www.guj.com.br/posts/preList/114591/619694.java</link>
				<pubDate><![CDATA[Fri, 9 Jan 2009 17:32:46]]> GMT</pubDate>
				<author><![CDATA[ thingol]]></author>
			</item>
	</channel>
</rss>