<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: Divisions com Hibernate: uso avançado da Criteria API</title>
	<atom:link href="http://blog.caelum.com.br/2008/09/11/divisions-com-hibernate-uso-avancado-da-criteria-api/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.caelum.com.br/2008/09/11/divisions-com-hibernate-uso-avancado-da-criteria-api/</link>
	<description>blog dos desenvolvedores da Caelum</description>
	<pubDate>Tue, 06 Jan 2009 03:45:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Criteria na JPA 2.0: Public Review! - CMilfont Tech</title>
		<link>http://blog.caelum.com.br/2008/09/11/divisions-com-hibernate-uso-avancado-da-criteria-api/comment-page-1/#comment-50516</link>
		<dc:creator>Criteria na JPA 2.0: Public Review! - CMilfont Tech</dc:creator>
		<pubDate>Thu, 11 Dec 2008 08:19:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/?p=316#comment-50516</guid>
		<description>[...] Ainda assim continuamos indicando o uso do Hibernate direto ao invés da especificação até que a especificação seja estável o suficiente com features decentes para um desenvolvimento sério em Java. A API de Criteria da implementação Hibernate continua ainda muito superior principalmente se você precisar de consultas um pouco mais avançadas. [...]</description>
		<content:encoded><![CDATA[<p>[...] Ainda assim continuamos indicando o uso do Hibernate direto ao invés da especificação até que a especificação seja estável o suficiente com features decentes para um desenvolvimento sério em Java. A API de Criteria da implementação Hibernate continua ainda muito superior principalmente se você precisar de consultas um pouco mais avançadas. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Francisco Barroso</title>
		<link>http://blog.caelum.com.br/2008/09/11/divisions-com-hibernate-uso-avancado-da-criteria-api/comment-page-1/#comment-50057</link>
		<dc:creator>Francisco Barroso</dc:creator>
		<pubDate>Fri, 21 Nov 2008 13:22:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/?p=316#comment-50057</guid>
		<description>Thiago Antonius, para isso você precisa criar um set na classe pai para trazer os atributos da filha, tipo:

Tenho um Aluno e preciso trazer o cpf que esta em Pessoal, na classe Aluno coloco o set...
	public void setPessoalCpf(String pessoalCpf)
	{
		if (pessoal == null)
			pessoal = new Pessoal();
		pessoal.setCpf(pessoalCpf);
	}

e na criteria do Aluno uso:
p.add(Projections.property("c.pessoal.cpf"),"pessoalCpf");

Acho que esse não é o local correto para responder essa duvida mas não encontrei o email do cara...falou!</description>
		<content:encoded><![CDATA[<p>Thiago Antonius, para isso você precisa criar um set na classe pai para trazer os atributos da filha, tipo:</p>
<p>Tenho um Aluno e preciso trazer o cpf que esta em Pessoal, na classe Aluno coloco o set&#8230;<br />
	public void setPessoalCpf(String pessoalCpf)<br />
	{<br />
		if (pessoal == null)<br />
			pessoal = new Pessoal();<br />
		pessoal.setCpf(pessoalCpf);<br />
	}</p>
<p>e na criteria do Aluno uso:<br />
p.add(Projections.property(&#8221;c.pessoal.cpf&#8221;),&#8221;pessoalCpf&#8221;);</p>
<p>Acho que esse não é o local correto para responder essa duvida mas não encontrei o email do cara&#8230;falou!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lucas Cavalcanti</title>
		<link>http://blog.caelum.com.br/2008/09/11/divisions-com-hibernate-uso-avancado-da-criteria-api/comment-page-1/#comment-50017</link>
		<dc:creator>Lucas Cavalcanti</dc:creator>
		<pubDate>Wed, 19 Nov 2008 15:59:11 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/?p=316#comment-50017</guid>
		<description>você pode tentar usar operadores de bit...

... where (pessoa.tipo &#38; CLIENTE) != 0

ou algo do tipo... não tenho certeza, mas deve funcionar em hql</description>
		<content:encoded><![CDATA[<p>você pode tentar usar operadores de bit&#8230;</p>
<p>&#8230; where (pessoa.tipo &amp; CLIENTE) != 0</p>
<p>ou algo do tipo&#8230; não tenho certeza, mas deve funcionar em hql</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Edson</title>
		<link>http://blog.caelum.com.br/2008/09/11/divisions-com-hibernate-uso-avancado-da-criteria-api/comment-page-1/#comment-49987</link>
		<dc:creator>Edson</dc:creator>
		<pubDate>Tue, 18 Nov 2008 12:43:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/?p=316#comment-49987</guid>
		<description>Olá, tenho um dúvida em usar hibernate.

Tenho um tabelão pessoa, com um campo númerico chamado tipo, onde guardo um valor "binário" que identifica o tipo do registro, ex:
0 = 1 cliente
1 = 2 fornecedor
2 = 4 funcionário
3 = 8 represen

Caso tenha um cliente e o mesmo também é fornecedor o campo fica com valor 1+ 2 = 3

uso funções, get_bit() set_bit()... comuns

Gostaria de saber como selecionar os dados com o hibernate sem usar sql direto

ex selec: select * from pessoa where get_bit(0,pessoa.tipo,1)</description>
		<content:encoded><![CDATA[<p>Olá, tenho um dúvida em usar hibernate.</p>
<p>Tenho um tabelão pessoa, com um campo númerico chamado tipo, onde guardo um valor &#8220;binário&#8221; que identifica o tipo do registro, ex:<br />
0 = 1 cliente<br />
1 = 2 fornecedor<br />
2 = 4 funcionário<br />
3 = 8 represen</p>
<p>Caso tenha um cliente e o mesmo também é fornecedor o campo fica com valor 1+ 2 = 3</p>
<p>uso funções, get_bit() set_bit()&#8230; comuns</p>
<p>Gostaria de saber como selecionar os dados com o hibernate sem usar sql direto</p>
<p>ex selec: select * from pessoa where get_bit(0,pessoa.tipo,1)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thiago Antonius Oliveira Souza</title>
		<link>http://blog.caelum.com.br/2008/09/11/divisions-com-hibernate-uso-avancado-da-criteria-api/comment-page-1/#comment-48782</link>
		<dc:creator>Thiago Antonius Oliveira Souza</dc:creator>
		<pubDate>Thu, 16 Oct 2008 11:25:45 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/?p=316#comment-48782</guid>
		<description>Olá, ótimo artigo. Se tratando da criteria API e o uso de projections você poderia sanar está dúvida minha.

Bom, eu uso o Projections.projectionList().add().add() ... para trazer somente as colunas que eu quero em uma consulta.
Faço isso sem problemas porém quanto tento trazer uma coluna de um objeto relacionado ao principal da pal.

session.createCriteria(Item.class)
.createAlias("categoria", "categoria")
.setProjection(Projections.projectionList()
.add( Projections.property("codigo"),"codigo")
.add( Projections.property("descricao"),"descricao")
.add( rojections.property("categoria.descricao"),"categoria.descricao")

Could not find setter for categoria.descricao on class br.protjeto.pojo.Item

Se eu colocasse só categoria ele não dava erro, porém trazia todos os atributos de categoria, mas eu só quero um atributo. Bom, tenho como eu fazer um DTO e colocar um atributo descricaoCategoria, porém ficar fazendo vários DTOs é complicado.

Já passou por essa situação?</description>
		<content:encoded><![CDATA[<p>Olá, ótimo artigo. Se tratando da criteria API e o uso de projections você poderia sanar está dúvida minha.</p>
<p>Bom, eu uso o Projections.projectionList().add().add() &#8230; para trazer somente as colunas que eu quero em uma consulta.<br />
Faço isso sem problemas porém quanto tento trazer uma coluna de um objeto relacionado ao principal da pal.</p>
<p>session.createCriteria(Item.class)<br />
.createAlias(&#8221;categoria&#8221;, &#8220;categoria&#8221;)<br />
.setProjection(Projections.projectionList()<br />
.add( Projections.property(&#8221;codigo&#8221;),&#8221;codigo&#8221;)<br />
.add( Projections.property(&#8221;descricao&#8221;),&#8221;descricao&#8221;)<br />
.add( rojections.property(&#8221;categoria.descricao&#8221;),&#8221;categoria.descricao&#8221;)</p>
<p>Could not find setter for categoria.descricao on class br.protjeto.pojo.Item</p>
<p>Se eu colocasse só categoria ele não dava erro, porém trazia todos os atributos de categoria, mas eu só quero um atributo. Bom, tenho como eu fazer um DTO e colocar um atributo descricaoCategoria, porém ficar fazendo vários DTOs é complicado.</p>
<p>Já passou por essa situação?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lucas Cavalcanti</title>
		<link>http://blog.caelum.com.br/2008/09/11/divisions-com-hibernate-uso-avancado-da-criteria-api/comment-page-1/#comment-47788</link>
		<dc:creator>Lucas Cavalcanti</dc:creator>
		<pubDate>Wed, 17 Sep 2008 10:47:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/?p=316#comment-47788</guid>
		<description>Olá,

George, esse código é meio estranho pra quem não sabe o que está acontecendo... mas é o tipo de código que vc extrai pra um método:

criteria.add(contemTodosOsCursos());
...
private Criterion contemTodosOsCursos() {
    return Subqueries.exists(....);
}

Tiago, se a query é construida estáticamente, então o melhor é usar HQL mesmo... mas se ela é dinâmica, criar criterias é bem melhor do que ficar concatenando strings... E além do mais, essa query do division não fica muito mais bonita em HQL:

from Aluno a where not exists (from Curso c where not exists
        (from Matricula m where m.aluno.id = a.id and m.curso.id = c.id))

[]</description>
		<content:encoded><![CDATA[<p>Olá,</p>
<p>George, esse código é meio estranho pra quem não sabe o que está acontecendo&#8230; mas é o tipo de código que vc extrai pra um método:</p>
<p>criteria.add(contemTodosOsCursos());<br />
&#8230;<br />
private Criterion contemTodosOsCursos() {<br />
    return Subqueries.exists(&#8230;.);<br />
}</p>
<p>Tiago, se a query é construida estáticamente, então o melhor é usar HQL mesmo&#8230; mas se ela é dinâmica, criar criterias é bem melhor do que ficar concatenando strings&#8230; E além do mais, essa query do division não fica muito mais bonita em HQL:</p>
<p>from Aluno a where not exists (from Curso c where not exists<br />
        (from Matricula m where m.aluno.id = a.id and m.curso.id = c.id))</p>
<p>[]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tiago Albineli Motta</title>
		<link>http://blog.caelum.com.br/2008/09/11/divisions-com-hibernate-uso-avancado-da-criteria-api/comment-page-1/#comment-47742</link>
		<dc:creator>Tiago Albineli Motta</dc:creator>
		<pubDate>Mon, 15 Sep 2008 06:55:59 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/?p=316#comment-47742</guid>
		<description>No caso de queries mais complicadas, minha preferência fica em utilizar um HQL ou mesmo um SQL diretamente. Esse emaranhado de Criterias me parecem menos legível, ou seria apenas costume.</description>
		<content:encoded><![CDATA[<p>No caso de queries mais complicadas, minha preferência fica em utilizar um HQL ou mesmo um SQL diretamente. Esse emaranhado de Criterias me parecem menos legível, ou seria apenas costume.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: George Gastaldi</title>
		<link>http://blog.caelum.com.br/2008/09/11/divisions-com-hibernate-uso-avancado-da-criteria-api/comment-page-1/#comment-47671</link>
		<dc:creator>George Gastaldi</dc:creator>
		<pubDate>Thu, 11 Sep 2008 19:48:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/?p=316#comment-47671</guid>
		<description>Muito bacana esse post. Mas a minha preocupação é se o código ficaria fácil de ser mantido, visto que nem todo desenvolvedor é esperto o bastante para sacar essa jogada.</description>
		<content:encoded><![CDATA[<p>Muito bacana esse post. Mas a minha preocupação é se o código ficaria fácil de ser mantido, visto que nem todo desenvolvedor é esperto o bastante para sacar essa jogada.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
