<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Everything is wrong &#187; ORM</title>
	<atom:link href="http://everythingiswrong.free.fr/index.php/tag/orm/feed/" rel="self" type="application/rss+xml" />
	<link>http://everythingiswrong.free.fr</link>
	<description>Un blog dédié à l&#039;informatique en général</description>
	<lastBuildDate>Wed, 06 Oct 2021 21:20:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Hibernate, JPA : DTYPE et requêtes JPQL (Java Persistence Query Language)</title>
		<link>http://everythingiswrong.free.fr/index.php/2011/12/22/hibernate-jpa-dtype-et-requetes-jpql-java-persistence-query-language/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2011/12/22/hibernate-jpa-dtype-et-requetes-jpql-java-persistence-query-language/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 21:09:23 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Java J2EE]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://everythingiswrong.free.fr/?p=1726</guid>
		<description><![CDATA[Utiliser le discriminant Hibernate pour différencier les entités qui étendent d'une même entité dans les requêtes JPA (HQL, EJBQL, etc.)]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Avec JPA, il est possible de modéliser son modèle de données avec une notion d&#8217;héritage. Par exemple, ci-dessous, il existe deux entités <em>Pomme</em> et <em>Poire</em> qui héritent de l&#8217;entité <em>Fruit</em> :</p>
<p style="text-align: center;"><img class="aligncenter" src="http://yuml.me/diagram/scruffy/class/[Fruit]^-[Pomme],%20[Fruit]^-[Poire]" alt="Exemple d'une hérarchie d'entités JPA" width="315" height="152" /></p>
<p style="text-align: justify;">La stratégie par défaut du lien d&#8217;héritage consiste à stocker dans une même table l&#8217;ensemble des données des objets et d&#8217;utiliser une colonne discriminante permettant de définir pour chaque ligne le type de la donnée (un Fruit, une Pomme ou une Poire).</p>
<p style="text-align: justify;">Avec Hibernate, cette colonne s&#8217;appelle <em>DTYPE</em>. Par défaut, il n&#8217;y a aucune référence à cette colonne dans le code Java. Dans ces conditions, il existe plusieurs solutions pour utiliser cette colonne dans les requêtes JPQL :</p>
<ul>
<li style="text-align: justify;">Implicite : utiliser le type <em>Fruit</em> ou l&#8217;un des sous-types <em>Pomme</em> ou <em>Poire</em> pour filtrer sur le type du fruit :</li>
</ul>
<pre class="brush: java; gutter: true; first-line: 1">from Fruit where ...

from Pomme where...

from Poire where ...</pre>
<ul>
<li style="text-align: justify;">Explicite : ajouter une nouvelle variable d&#8217;instance neutre pour mapper la colonne <em>DTYPE </em>de la classe mère :</li>
</ul>
<pre class="brush: java; gutter: true; first-line: 1">@Column(insertable = false, updatable = false)
private String dtype;
...
// Exemple d'un requête JPQL utilisant dtype pour ordonner les entités par type :
"from Fruit where ... order by dtype";</pre>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2011/12/22/hibernate-jpa-dtype-et-requetes-jpql-java-persistence-query-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
