<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - JPA</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide sur l'API de persistance JPA (Java Persistence API).]]></description>
		<language>fr</language>
		<lastBuildDate>Tue, 28 Jul 2026 16:11:28 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - JPA</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Projection vers un DTO et requête complexe</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184681&amp;goto=newpost</link>
			<pubDate>Thu, 16 Jul 2026 08:47:12 GMT</pubDate>
			<description>Bonjour, 
Nous migrons...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
Nous migrons d'Hibernate Criteria vers JPA, non sans problèmes.<br />
Voici quelques unes des classes que nous utilisons :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">@Entity</span>
<span style="color: #339933;">@Inheritance</span><span class="br0">&#40;</span>strategy = InheritanceType.TABLE_PER_CLASS<span class="br0">&#41;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">abstract</span> <span style="color: #0000ff;">class</span> FluxEntrant
<span class="br0">&#123;</span>
    <span style="color: #339933;">@Id</span>
    <span style="color: #339933;">@GeneratedValue</span><span class="br0">&#40;</span>strategy = GenerationType.SEQUENCE, generator = <span style="color: #FF0000;">&quot;flen_sequence&quot;</span><span class="br0">&#41;</span>
    <span style="color: #339933;">@SequenceGenerator</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;flen_sequence&quot;</span>, sequenceName = <span style="color: #FF0000;">&quot;FLEN_ID_SEQUENCE&quot;</span>, allocationSize = <span style="color: #cc66cc;">1000</span><span class="br0">&#41;</span>
    <span style="color: #339933;">@Column</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;FLEN_ID&quot;</span>, nullable = <span style="color: #0000ff;">false</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">private</span> Long id;
&nbsp;
    <span style="color: #808080; font-weight: bold;">/** version. */</span>
    <span style="color: #339933;">@Version</span>
    <span style="color: #339933;">@Column</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;VERSION&quot;</span>, nullable = <span style="color: #0000ff;">false</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span> version;
&nbsp;
    <span style="color: #339933;">@Column</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;DATE&quot;</span>, nullable = <span style="color: #0000ff;">true</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">protected</span> LocalDateTime date;
&nbsp;
    <span style="color: #339933;">@Column</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;CODEIC&quot;</span>, nullable = <span style="color: #0000ff;">true</span>, length = <span style="color: #cc66cc;">4</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">protected</span> String codeIc;
&nbsp;
    <span style="color: #339933;">@Column</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;CODESTRUCT&quot;</span>, nullable = <span style="color: #0000ff;">true</span>, length = <span style="color: #cc66cc;">6</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">protected</span> String codestruct;
&nbsp;
    <span style="color: #339933;">@Column</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;CODECOMPLTSTRUCT&quot;</span>, nullable = <span style="color: #0000ff;">true</span>, length = <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">protected</span> String codeCompltStruct;
&nbsp;
&nbsp;
    <span style="color: #339933;">@Column</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;ETATOPE&quot;</span>, nullable = <span style="color: #0000ff;">false</span><span class="br0">&#41;</span>
    <span style="color: #339933;">@Enumerated</span><span class="br0">&#40;</span>EnumType.STRING<span class="br0">&#41;</span>
    <span style="color: #0000ff;">protected</span> EtatOpe etatOpe;
&nbsp;
....
&nbsp;
&nbsp;
    <span style="color: #339933;">@ManyToOne</span>
    <span style="color: #339933;">@JoinColumn</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;JORE_ID_JOURNALRECEPTION&quot;</span>, nullable = <span style="color: #0000ff;">true</span>, foreignKey = <span style="color: #339933;">@ForeignKey</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;FK_CORD_JORE_1&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">protected</span> JournalReception journalReception;
&nbsp;
    <span style="color: #808080; font-weight: bold;">/** Le montant. */</span>
    <span style="color: #339933;">@Column</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;MONTANT&quot;</span>, nullable = <span style="color: #0000ff;">false</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">protected</span> BigDecimal montant;
<span class="br0">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
&nbsp;
<span style="color: #339933;">@Entity</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">abstract</span> <span style="color: #0000ff;">class</span> FluxEntrantPlat <span style="color: #0000ff;">extends</span> FluxEntrant
<span class="br0">&#123;</span>
.....
&nbsp;
    <span style="color: #339933;">@ManyToOne</span>
    <span style="color: #339933;">@JoinColumn</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;COBD_ID_CODEOPERATION&quot;</span>, nullable = <span style="color: #0000ff;">true</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">private</span> CodeOperation codeOperation;
<span class="br0">&#125;</span>
&nbsp;
<span style="color: #339933;">@Entity</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">abstract</span> <span style="color: #0000ff;">class</span> FluxEntrantPlatPrincipal <span style="color: #0000ff;">extends</span> FluxEntrantPlat
<span class="br0">&#123;</span>
&nbsp;
   ...
    <span style="color: #339933;">@Column</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;NNE&quot;</span>, nullable = <span style="color: #0000ff;">true</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">private</span> String nne;
<span class="br0">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #339933;">@Entity</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">abstract</span> <span style="color: #0000ff;">class</span> FeppPartenaire <span style="color: #0000ff;">extends</span> FluxEntrantPlatPrincipal
<span class="br0">&#123;</span>
&nbsp;
...
    <span style="color: #339933;">@ManyToOne</span>
    <span style="color: #339933;">@JoinColumn</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;APPL_ID_APPLICATION&quot;</span>, nullable = <span style="color: #0000ff;">true</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">private</span> Application application;
<span class="br0">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #339933;">@Entity</span>
<span style="color: #339933;">@Table</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;FEPPLCR_FLCR&quot;</span><span class="br0">&#41;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> FeppPartenaireLcr <span style="color: #0000ff;">extends</span> FeppPartenaire
<span class="br0">&#123;</span>.....<span class="br0">&#125;</span>
&nbsp;
<span style="color: #339933;">@Entity</span>
<span style="color: #339933;">@Table</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;FEPPPIM_FPIM&quot;</span><span class="br0">&#41;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> FeppPartenairePim <span style="color: #0000ff;">extends</span> FeppPartenaire
<span class="br0">&#123;</span>....<span class="br0">&#125;</span>
&nbsp;
<span style="color: #339933;">@MappedSuperclass</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">abstract</span> <span style="color: #0000ff;">class</span> FeppPartenaireTip <span style="color: #0000ff;">extends</span> FeppPartenaire
<span class="br0">&#123;</span>....<span class="br0">&#125;</span>
&nbsp;
<span style="color: #339933;">@Entity</span>
<span style="color: #339933;">@Table</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;FEPPTIPVIR_FVIR&quot;</span><span class="br0">&#41;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> FeppPartenaireVir <span style="color: #0000ff;">extends</span> FeppPartenaire
<span class="br0">&#123;</span>....<span class="br0">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #339933;">@Entity</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">abstract</span> <span style="color: #0000ff;">class</span> FeppRetour <span style="color: #0000ff;">extends</span> FluxEntrantPlatPrincipal
<span class="br0">&#123;</span>
&nbsp;
    <span style="color: #339933;">@ManyToOne</span>
    <span style="color: #339933;">@JoinColumn</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;APPL_ID_APPLICATION&quot;</span>, nullable = <span style="color: #0000ff;">true</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">private</span> Application application;
.....<span class="br0">&#125;</span>
&nbsp;
<span style="color: #339933;">@Entity</span>
<span style="color: #339933;">@Table</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;FEPPCORR_FCOR&quot;</span><span class="br0">&#41;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> FeppCorrection <span style="color: #0000ff;">extends</span> FeppRetour
<span class="br0">&#123;</span>
....<span class="br0">&#125;</span>
&nbsp;
<span style="color: #339933;">@Entity</span>
<span style="color: #339933;">@Table</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;FEPPREJET_FREJ&quot;</span><span class="br0">&#41;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> FeppRejet <span style="color: #0000ff;">extends</span> FeppRetour
<span class="br0">&#123;</span> ...<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div>Ci-dessous, une méthode Java permettant de réaliser une projection vers un DTO :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> List&lt;BeanProjectionFeppPourStats&gt; makeListeBeanProjectionFeppPourStats<span class="br0">&#40;</span>
        JournalReception unJournalReception, <span style="color: #0000ff;">int</span> pPremiereLigneALire, <span style="color: #0000ff;">int</span> pMaxLignesAlire<span class="br0">&#41;</span>
&nbsp;
    <span class="br0">&#123;</span>
&nbsp;
        DetachedCriteria criteria = DetachedCriteria.forClass<span class="br0">&#40;</span>FluxEntrantPlatPrincipal.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>;
        criteria.createAlias<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;codeOperation&quot;</span>, <span style="color: #FF0000;">&quot;codeOperation&quot;</span><span class="br0">&#41;</span>;
        criteria.createAlias<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;application&quot;</span>, <span style="color: #FF0000;">&quot;application&quot;</span>, JoinType.LEFT_OUTER_JOIN<span class="br0">&#41;</span>;
        criteria.createAlias<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;journalReception&quot;</span>, <span style="color: #FF0000;">&quot;journalReception&quot;</span><span class="br0">&#41;</span>;
        Emetteur<span class="br0">&#91;</span><span class="br0">&#93;</span> emetteursRecherches = <span class="br0">&#123;</span>Emetteur.RADIO, Emetteur.RSS<span class="br0">&#125;</span>;
        criteria.add<span class="br0">&#40;</span>Restrictions.in<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;journalReception.emetteur&quot;</span>, emetteursRecherches<span class="br0">&#41;</span><span class="br0">&#41;</span>;
        criteria.add<span class="br0">&#40;</span>Restrictions.eq<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;etatOpe&quot;</span>, EtatOpe.CORRECT<span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
        <span style="color: #0000ff;">final</span> ProjectionList uneProjectionSpe = Projections.projectionList<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
        uneProjectionSpe.add<span class="br0">&#40;</span>Projections.groupProperty<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;codeIc&quot;</span><span class="br0">&#41;</span>, <span style="color: #FF0000;">&quot;codeIc&quot;</span><span class="br0">&#41;</span>
            .add<span class="br0">&#40;</span>Projections.groupProperty<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;codestruct&quot;</span><span class="br0">&#41;</span>, <span style="color: #FF0000;">&quot;codestruct&quot;</span><span class="br0">&#41;</span>
            .add<span class="br0">&#40;</span>Projections.groupProperty<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;codeCompltStruct&quot;</span><span class="br0">&#41;</span>, <span style="color: #FF0000;">&quot;codeCompltStruct&quot;</span><span class="br0">&#41;</span>
            .add<span class="br0">&#40;</span>Projections.groupProperty<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;date&quot;</span><span class="br0">&#41;</span>, <span style="color: #FF0000;">&quot;dateRecherchee&quot;</span><span class="br0">&#41;</span>
            .add<span class="br0">&#40;</span>Projections.groupProperty<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;nne&quot;</span><span class="br0">&#41;</span>, <span style="color: #FF0000;">&quot;nne&quot;</span><span class="br0">&#41;</span>
            .add<span class="br0">&#40;</span>Projections.groupProperty<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;application&quot;</span><span class="br0">&#41;</span>, <span style="color: #FF0000;">&quot;application&quot;</span><span class="br0">&#41;</span>
            .add<span class="br0">&#40;</span>Projections.groupProperty<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;codeOperation&quot;</span><span class="br0">&#41;</span>, <span style="color: #FF0000;">&quot;codeOperation&quot;</span><span class="br0">&#41;</span>
            .add<span class="br0">&#40;</span>Projections.groupProperty<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;journalReception.emetteur&quot;</span><span class="br0">&#41;</span>, <span style="color: #FF0000;">&quot;emetteur&quot;</span><span class="br0">&#41;</span>
            .add<span class="br0">&#40;</span>Projections.rowCount<span class="br0">&#40;</span><span class="br0">&#41;</span>, <span style="color: #FF0000;">&quot;nbOperations&quot;</span><span class="br0">&#41;</span>
            .add<span class="br0">&#40;</span>Projections.sum<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;montant&quot;</span><span class="br0">&#41;</span>, <span style="color: #FF0000;">&quot;montant&quot;</span><span class="br0">&#41;</span>;
&nbsp;
        criteria.setProjection<span class="br0">&#40;</span>uneProjectionSpe<span class="br0">&#41;</span>.setResultTransformer<span class="br0">&#40;</span>
            <span style="color: #0000ff;">new</span> AliasToBeanResultTransformer<span class="br0">&#40;</span>BeanProjectionFeppPourStats.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.add<span class="br0">&#40;</span>
                Restrictions.eq<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;journalReception&quot;</span>, unJournalReception<span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
        criteria.addOrder<span class="br0">&#40;</span>Order.asc<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;codeIc&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.addOrder<span class="br0">&#40;</span>Order.asc<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;codestruct&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.addOrder<span class="br0">&#40;</span>
            Order.asc<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;codeCompltStruct&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.addOrder<span class="br0">&#40;</span>Order.asc<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;dateRecherchee&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.addOrder<span class="br0">&#40;</span>Order.asc<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;nne&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.addOrder<span class="br0">&#40;</span>
                Order.asc<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;application&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
            .addOrder<span class="br0">&#40;</span>Order.asc<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;codeOperation&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.addOrder<span class="br0">&#40;</span>Order.asc<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;emetteur&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
        <span style="color: #0000ff;">return</span> <span class="br0">&#40;</span>List&lt;BeanProjectionFeppPourStats&gt;<span class="br0">&#41;</span> getHibernateTemplate<span class="br0">&#40;</span><span class="br0">&#41;</span>.findByCriteria<span class="br0">&#40;</span>criteria, pPremiereLigneALire,
            pMaxLignesAlire<span class="br0">&#41;</span>;
    <span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div>Cette méthode génère le SQL suivant, qui fonctionne parfaitement :<br />
 <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br /></div></td><td valign="top"><pre style="margin: 0">   select
        this_.codeIc as y0_,
        this_.codestruct as y1_,
        this_.codeCompltStruct as y2_,
        this_.DATE as y3_,
        this_.nne as y4_,
        this_.APPL_ID_APPLICATION as y5_,
        this_.COBD_ID_CODEOPERATION as y6_,
        journalrec3_.emetteur as y7_,
        count<span class="br0">&#40;</span>*<span class="br0">&#41;</span> as y8_,
        sum<span class="br0">&#40;</span>this_.montant<span class="br0">&#41;</span> as y9_ 
    from
        <span class="br0">&#40;</span> select
            OPER_ID,
            DATE,
            codeIc,
            codestruct,
            codeCompltStruct,
            libStruc,
            etatoperation,
            montant,
			JORE_ID_JOURNALRECEPTION,
            COBD_ID_CODEOPERATION,
            nne,
            <span style="color: #0000ff;">null</span> as APPL_ID_APPLICATION,
            <span style="color: #cc66cc;">9</span> as clazz_ 
        from
            FEPPLCR_FLCR
        union
        all select
            OPER_ID,
            DATE,
            codeIc,
            codestruct,
            codeCompltStruct,
            libStruc,
            etatoperation,
            montant,
            JORE_ID_JOURNALRECEPTION,
            COBD_ID_CODEOPERATION,
            nne,
            <span style="color: #0000ff;">null</span> as APPL_ID_APPLICATION,
            <span style="color: #cc66cc;">4</span> as clazz_ 
        from
            FEPPPIM_FPIM 
        union
        all select
            OPER_ID,
            DATE,
            codeIc,
            codestruct,
            codeCompltStruct,
            libStruc,
            etatoperation,
            montant,
            JORE_ID_JOURNALRECEPTION,
            COBD_ID_CODEOPERATION,
            nne,
            <span style="color: #0000ff;">null</span> as APPL_ID_APPLICATION,
            <span style="color: #cc66cc;">5</span> as clazz_ 
        from
            FEPPTIPVIR_FVIR 
        union
        all select
            OPER_ID,
            DATE,
            codeIc,
            codestruct,
            codeCompltStruct,
            libStruc,
            etatoperation,
            montant,
            JORE_ID_JOURNALRECEPTION,
            COBD_ID_CODEOPERATION,
            nne,
            APPL_ID_APPLICATION,
            <span style="color: #cc66cc;">12</span> as clazz_ 
        from
            FEPPCORR_FCOR 
        union
        all select
            OPER_ID,
            DATE,
            codeIc,
            codestruct,
            codeCompltStruct,
            libStruc,
            etatoperation,
            montant,
            JORE_ID_JOURNALRECEPTION,
            COBD_ID_CODEOPERATION,
            nne,
            APPL_ID_APPLICATION,
            <span style="color: #cc66cc;">17</span> as clazz_ 
        from
            FEPPREJET_FREJ 
    <span class="br0">&#41;</span> this_ 
inner join
    JOURNALRECEPTIO_JORE journalrec3_ 
        on this_.JORE_ID_JOURNALRECEPTION=journalrec3_.JORE_ID 
inner join
    CODEOPERATION_COBD codeoperat1_ 
        on this_.COBD_ID_CODEOPERATION=codeoperat1_.COBD_ID 
left outer join
    APPLICATION_APPL applicatio2_ 
        on this_.APPL_ID_APPLICATION=applicatio2_.APPL_ID 
where
    journalrec3_.emetteur in <span class="br0">&#40;</span>
        ?, ?
    <span class="br0">&#41;</span> 
    and this_.etatoperation=? 
    and this_.JORE_ID_JOURNALRECEPTION=? 
group by
    this_.codeIc,
    this_.codestruct,
    this_.codeCompltStruct,
    this_.DATE,
    this_.nne,
    this_.APPL_ID_APPLICATION,
    this_.COBD_ID_CODEOPERATION,
    journalrec3_.emetteur 
order by
    y0_ asc,
    y1_ asc,
    y2_ asc,
    y3_ asc,
    y4_ asc,
    y5_ asc,
    y6_ asc,
    y7_ asc fetch first ? rows only;</pre></td></tr></table></code><hr />
</div>J'essaie donc de passer en JPA Criteria :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> List&lt;BeanProjectionFeppPourStats&gt; makeListeBeanProjectionFeppPourStats<span class="br0">&#40;</span>
        JournalReception unJournalReception, <span style="color: #0000ff;">int</span> pPremiereLigneALire, <span style="color: #0000ff;">int</span> pMaxLignesAlire<span class="br0">&#41;</span>
&nbsp;
    <span class="br0">&#123;</span>
&nbsp;
        CriteriaBuilder requeteBuilder = entityManager.getCriteriaBuilder<span class="br0">&#40;</span><span class="br0">&#41;</span>;
        CriteriaQuery&lt;BeanProjectionFeppPourStats&gt; maRequeteProjection =
            requeteBuilder.createQuery<span class="br0">&#40;</span>BeanProjectionFeppPourStats.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>;
        Root&lt;FluxEntrantPlatPrincipal&gt; baseDuFrom =
            maRequeteProjection.from<span class="br0">&#40;</span>FluxEntrantPlatPrincipal.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>;
&nbsp;
        Join&lt;FluxEntrantPlatPrincipal, JournalReception&gt; joinFluxEntrantPlatPrincipalJournalReception =
            baseDuFrom.join<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.journalReception, JoinType.INNER<span class="br0">&#41;</span>;
&nbsp;
        Root&lt;FeppPartenaire&gt; baseFeppPartenaire = maRequeteProjection.from<span class="br0">&#40;</span>FeppPartenaire.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>;
        Join&lt;FeppPartenaire, Application&gt; joinApplicationFeppPartenaire =
            <span class="br0">&#40;</span>Join&lt;FeppPartenaire, Application&gt;<span class="br0">&#41;</span> baseFeppPartenaire.join<span class="br0">&#40;</span>FeppPartenaire_.application, JoinType.LEFT<span class="br0">&#41;</span>;
        <span style="color: #808080;">//requeteBuilder.treat(baseDuFrom, FeppPartenaire.class).get(FeppPartenaire_.application).alias(&quot;application&quot;);</span>
&nbsp;
        Root&lt;FeppRetour&gt; baseFeppRetour = maRequeteProjection.from<span class="br0">&#40;</span>FeppRetour.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>;
        Join&lt;FeppRetour, Application&gt; joinApplicationFeppRetour =
            <span class="br0">&#40;</span>Join&lt;FeppRetour, Application&gt;<span class="br0">&#41;</span> baseFeppRetour.join<span class="br0">&#40;</span>FeppRetour_.application, JoinType.LEFT<span class="br0">&#41;</span>;
        <span style="color: #808080;">//requeteBuilder.treat(baseDuFrom, FeppRetour.class).get(FeppRetour_.application).alias(&quot;application&quot;);</span>
&nbsp;
        List&lt;Predicate&gt; listePredicate = <span style="color: #0000ff;">new</span> ArrayList&lt;&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
        Predicate eqJournalReception = requeteBuilder.equal<span class="br0">&#40;</span>baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.journalReception<span class="br0">&#41;</span>, unJournalReception<span class="br0">&#41;</span>;
        listePredicate.add<span class="br0">&#40;</span>eqJournalReception<span class="br0">&#41;</span>;
        Predicate eqEtatCorrect = requeteBuilder.equal<span class="br0">&#40;</span>baseDuFrom.get<span class="br0">&#40;</span>FluxEntrant_.etatOpe<span class="br0">&#41;</span>, EtatOpe.CORRECT<span class="br0">&#41;</span>;
        listePredicate.add<span class="br0">&#40;</span>eqEtatCorrect<span class="br0">&#41;</span>;
&nbsp;
        List&lt;Emetteur&gt; laListeEmetteur = <span style="color: #0000ff;">new</span> LinkedList&lt;&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>;
        laListeEmetteur.add<span class="br0">&#40;</span>Emetteur.RADIO<span class="br0">&#41;</span>;
        laListeEmetteur.add<span class="br0">&#40;</span>Emetteur.RSS<span class="br0">&#41;</span>;
&nbsp;
        Predicate inEmetteurs = joinFluxEntrantPlatPrincipalJournalReception.get<span class="br0">&#40;</span>JournalReception_.emetteur<span class="br0">&#41;</span>.in<span class="br0">&#40;</span>laListeEmetteur<span class="br0">&#41;</span>;
        listePredicate.add<span class="br0">&#40;</span>inEmetteurs<span class="br0">&#41;</span>;
&nbsp;
&nbsp;
        Selection&lt;BeanProjectionFeppPourStats&gt; selection =
            requeteBuilder.construct<span class="br0">&#40;</span>BeanProjectionFeppPourStats.<span style="color: #0000ff;">class</span>,
                baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.codeIc<span class="br0">&#41;</span>,
                baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.codestruct<span class="br0">&#41;</span>,
                baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.codeCompltStruct<span class="br0">&#41;</span>,
                baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.date<span class="br0">&#41;</span>,
                baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.nne<span class="br0">&#41;</span>,
&nbsp;
                requeteBuilder.selectCase<span class="br0">&#40;</span><span class="br0">&#41;</span>
                    .when<span class="br0">&#40;</span>requeteBuilder.equal<span class="br0">&#40;</span>baseDuFrom.type<span class="br0">&#40;</span><span class="br0">&#41;</span>, FeppPartenaire.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>,
                        requeteBuilder.treat<span class="br0">&#40;</span>baseFeppPartenaire, FeppPartenaire.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>.get<span class="br0">&#40;</span>FeppPartenaire_.application<span class="br0">&#41;</span><span class="br0">&#41;</span>
                    .otherwise<span class="br0">&#40;</span>requeteBuilder.treat<span class="br0">&#40;</span>baseFeppRetour, FeppRetour.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>.get<span class="br0">&#40;</span>FeppRetour_.application<span class="br0">&#41;</span><span class="br0">&#41;</span>,
                baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.codeOperation<span class="br0">&#41;</span>,
                joinFluxEntrantPlatPrincipalJournalReception.get<span class="br0">&#40;</span>JournalReception_.emetteur<span class="br0">&#41;</span>,
                requeteBuilder.countDistinct<span class="br0">&#40;</span>baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.id<span class="br0">&#41;</span><span class="br0">&#41;</span>,
                requeteBuilder.sum<span class="br0">&#40;</span>baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.montant<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
        maRequeteProjection.groupBy<span class="br0">&#40;</span>
            baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.codeIc<span class="br0">&#41;</span>,
            baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.codestruct<span class="br0">&#41;</span>,
            baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.codeCompltStruct<span class="br0">&#41;</span>,
            baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.date<span class="br0">&#41;</span>,
            baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.nne<span class="br0">&#41;</span>,
            requeteBuilder.selectCase<span class="br0">&#40;</span><span class="br0">&#41;</span>
            .when<span class="br0">&#40;</span>requeteBuilder.equal<span class="br0">&#40;</span>baseDuFrom.type<span class="br0">&#40;</span><span class="br0">&#41;</span>, FeppPartenaire.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>,
                requeteBuilder.treat<span class="br0">&#40;</span>baseFeppPartenaire, FeppPartenaire.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>.get<span class="br0">&#40;</span>FeppPartenaire_.application<span class="br0">&#41;</span><span class="br0">&#41;</span>
            .otherwise<span class="br0">&#40;</span>requeteBuilder.treat<span class="br0">&#40;</span>baseFeppRetour, FeppRetour.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>.get<span class="br0">&#40;</span>FeppRetour_.application<span class="br0">&#41;</span><span class="br0">&#41;</span>,
            baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.codeOperation<span class="br0">&#41;</span>,
            joinFluxEntrantPlatPrincipalJournalReception.get<span class="br0">&#40;</span>JournalReception_.emetteur<span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
        maRequeteProjection.select<span class="br0">&#40;</span>selection<span class="br0">&#41;</span>.where<span class="br0">&#40;</span>requeteBuilder.and<span class="br0">&#40;</span>listePredicate.toArray<span class="br0">&#40;</span><span style="color: #0000ff;">new</span> Predicate<span class="br0">&#91;</span>listePredicate.size<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
        List&lt;Order&gt; lesOrdreDeTri = <span style="color: #0000ff;">new</span> ArrayList&lt;&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>;
        lesOrdreDeTri.add<span class="br0">&#40;</span>requeteBuilder.asc<span class="br0">&#40;</span>baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.codeIc<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
        lesOrdreDeTri.add<span class="br0">&#40;</span>requeteBuilder.asc<span class="br0">&#40;</span>baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.codestruct<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
        lesOrdreDeTri.add<span class="br0">&#40;</span>requeteBuilder.asc<span class="br0">&#40;</span>baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.codeCompltStruct<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
        lesOrdreDeTri.add<span class="br0">&#40;</span>requeteBuilder.asc<span class="br0">&#40;</span>baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.date<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
        lesOrdreDeTri.add<span class="br0">&#40;</span>requeteBuilder.asc<span class="br0">&#40;</span>baseDuFrom.get<span class="br0">&#40;</span>FluxEntrantPlatPrincipal_.nne<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
        lesOrdreDeTri.add<span class="br0">&#40;</span>requeteBuilder.asc<span class="br0">&#40;</span>requeteBuilder.selectCase<span class="br0">&#40;</span><span class="br0">&#41;</span>
            .when<span class="br0">&#40;</span>requeteBuilder.equal<span class="br0">&#40;</span>baseDuFrom.type<span class="br0">&#40;</span><span class="br0">&#41;</span>, FeppPartenaire.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>,
                requeteBuilder.treat<span class="br0">&#40;</span>baseFeppPartenaire, FeppPartenaire.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>.get<span class="br0">&#40;</span>FeppPartenaire_.application<span class="br0">&#41;</span><span class="br0">&#41;</span>
            .otherwise<span class="br0">&#40;</span>requeteBuilder.treat<span class="br0">&#40;</span>baseFeppRetour, FeppRetour.<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>.get<span class="br0">&#40;</span>FeppRetour_.application<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
        lesOrdreDeTri.add<span class="br0">&#40;</span>requeteBuilder.asc<span class="br0">&#40;</span>joinFluxEntrantPlatPrincipalJournalReception.get<span class="br0">&#40;</span>JournalReception_.emetteur<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
        TypedQuery&lt;BeanProjectionFeppPourStats&gt; query = entityManager.createQuery<span class="br0">&#40;</span>maRequeteProjection.orderBy<span class="br0">&#40;</span>lesOrdreDeTri<span class="br0">&#41;</span><span class="br0">&#41;</span>
            .setFirstResult<span class="br0">&#40;</span>pPremiereLigneALire<span class="br0">&#41;</span>.setMaxResults<span class="br0">&#40;</span>pMaxLignesAlire<span class="br0">&#41;</span>;
&nbsp;
        <span style="color: #0000ff;">return</span> query.getResultList<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
    <span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div>Mais là, je rencontre plusieurs difficultés :<br />
- d'abord, je ne suis pas certain du bon fonctionnement du selectCase()...when()...otherwise() ici. Le but est de préciser à JPA qu'il y a bien deux attributs &quot;application&quot; différents, donc deux manières différentes d'y accéder. Auparavant, Hibernate semblait bien plus permissif/tolérant.<br />
- avant d'en arriver à ce code, j'ai dû modifier quelques annotations sur des classes, de @MappedSuperClass à @Entity, puisqu'une mapped superclass, contrairement à une entity, n'est pas requêtable.  (&quot;Mapped super class is not queryable and must not be passed as an argument to EntityManager or Query operations. Consider using an abstract class instead, mapped as an Entity.&quot;<br />
A votre avis, le mapping indiqué est-il le bon?<br />
- lors de l'exécution de la requête, j'observe une erreur et des phénomènes troublants :<br />
		- l'erreur : Caused by: java.sql.SQLSyntaxErrorException: ORA-00979: n'est pas une expression GROUP BY<br />
		- apparitions de cross join que je ne comprends pas <br />
		- le sql généré  :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br /></div></td><td valign="top"><pre style="margin: 0">select fepp0_.CODEIC as col_0_0_, fepp0_.CODESTRUCT as col_1_0_, fepp0_.CODECOMPLTSTRUCT as col_2_0_, fepp0_.DATE as col_3_0_, fepp0_.NNE as col_4_0_, 
	 <span style="color: #0000ff;">case</span> when fepp0_.clazz_=:<span style="color: #cc66cc;">1</span>  then fepppartenaire1_.APPL_ID_APPLICATION 
	 <span style="color: #0000ff;">else</span> feppeetour2_.APPL_ID_APPLICATION end as col_5_0_, fepp0_.COBD_ID_CODEOPERATION as col_6_0_, journalrec3_.EMETTEUR as col_7_0_, count<span class="br0">&#40;</span>distinct fepp0_.FEPP_ID<span class="br0">&#41;</span> as col_8_0_, 
	 sum<span class="br0">&#40;</span>fepp0_.MONTANT<span class="br0">&#41;</span> as col_9_0_ 
	 from <span class="br0">&#40;</span>
	 select FEPP_ID, CODECOMPLTSTRUCT, CODEIC, CODESTRUCT, DATE, ETATOPE, LIBELLEPOSTE, MONTANT, VERSION, ANOP_ID_ANOOPERATION, COFI_ID_PATRONYFICTIF, JORE_ID_JOURNALRECEPTION, SEME_ID_SELECTIONMELIF, ARTICLEORIGINE, 
	 CODELIAMLISSEMENTDESTINATAIRE, CODEMELINADESTINATAIRE, CODESCR, DATEPRESENTATION, CATEGORIEFLUXFINANCIER, NATUREDETAILLEE, NOMDESTINATAIRE, GINGERDESTINATAIRE, CODELIAMLISSEMENTEMETTEUR, CODEMELINAEMETTEUR, NNE, 
	 NOMEMETTEURDONNEURDORDRE, NUMEROENREGISTREMENT, COBD_ID_CODEOPERATION, VARIABLESELONAPPLI, APPL_ID_APPLICATION, MORE_ID_MOTIFRETOUR, CODELIAMCORRIGE, CODEMELINACORRIGE, DATEREGLTOPINITIALE, NUMBRUTCORRIGE, DATEECHEANCELCR, 
	 LIBELLEABREVDOMICILIATION, REFDESTINATAIRE, REFFINANCIALHEA, REFEMETTEURCORRECTION, REFOPINITIALE, NERISOFINANCIALHEA, <span style="color: #0000ff;">null</span> as GINGEREMETTEUR, <span style="color: #0000ff;">null</span> as REFPRESENTATEUR, <span style="color: #0000ff;">null</span> as CODEACCEPTATION, <span style="color: #0000ff;">null</span> as CODEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as DATECREATION, 
	 <span style="color: #0000ff;">null</span> as DATEECHEANCE, <span style="color: #0000ff;">null</span> as DATEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as REFTIRE, <span style="color: #0000ff;">null</span> as REFTIREUR, <span style="color: #0000ff;">null</span> as NERISOTIREUR, <span style="color: #0000ff;">null</span> as ACCEPTATION, <span style="color: #0000ff;">null</span> as MONTANTORIGINE, <span style="color: #0000ff;">null</span> as REFD6OPINITIALE, <span style="color: #0000ff;">null</span> as REFEMETTEURPAPAYE, <span style="color: #0000ff;">null</span> as NERISODESTINATAIRE, <span style="color: #0000ff;">null</span> as NERISOEMETTEUR, 
	 <span style="color: #0000ff;">null</span> as DATEREGLTIMAGEQUECHUAORIGINE, <span style="color: #0000ff;">null</span> as NOMDUTIREUR, <span style="color: #0000ff;">null</span> as NUMEROQUECHUA, <span style="color: #0000ff;">null</span> as PRENOMDUTIREUR, <span style="color: #0000ff;">null</span> as HUADUCOMPTABLE, <span style="color: #0000ff;">null</span> as LIBELLE1, <span style="color: #0000ff;">null</span> as LIBELLE2, <span style="color: #0000ff;">null</span> as TYPEPILOTISVUGM, <span style="color: #cc66cc;">9</span> as clazz_ from FEPPCORR_FCOR 
	 union all 
	 select FEPP_ID, CODECOMPLTSTRUCT, CODEIC, CODESTRUCT, DATE, ETATOPE, LIBELLEPOSTE, MONTANT, VERSION, ANOP_ID_ANOOPERATION, COFI_ID_PATRONYFICTIF, JORE_ID_JOURNALRECEPTION, SEME_ID_SELECTIONMELIF, ARTICLEORIGINE, CODELIAMLISSEMENTDESTINATAIRE, 
	 CODEMELINADESTINATAIRE, CODESCR, DATEPRESENTATION, CATEGORIEFLUXFINANCIER, NATUREDETAILLEE, NOMDESTINATAIRE, GINGERDESTINATAIRE, CODELIAMLISSEMENTEMETTEUR, CODEMELINAEMETTEUR, NNE, NOMEMETTEURDONNEURDORDRE, NUMEROENREGISTREMENT, COBD_ID_CODEOPERATION, 
	 VARIABLESELONAPPLI, APPL_ID_APPLICATION, MORE_ID_MOTIFRETOUR, <span style="color: #0000ff;">null</span> as CODELIAMCORRIGE, <span style="color: #0000ff;">null</span> as CODEMELINACORRIGE, DATEREGLTOPINITIALE, <span style="color: #0000ff;">null</span> as NUMBRUTCORRIGE, DATEECHEANCELCR, <span style="color: #0000ff;">null</span> as LIBELLEABREVDOMICILIATION, REFDESTINATAIRE, REFFINANCIALHEA, <span style="color: #0000ff;">null</span> as REFEMETTEURCORRECTION, 
	 <span style="color: #0000ff;">null</span> as REFOPINITIALE, <span style="color: #0000ff;">null</span> as NERISOFINANCIALHEA, <span style="color: #0000ff;">null</span> as GINGEREMETTEUR, <span style="color: #0000ff;">null</span> as REFPRESENTATEUR, <span style="color: #0000ff;">null</span> as CODEACCEPTATION, CODEENTREEPORTEFEUILLE, DATECREATION, <span style="color: #0000ff;">null</span> as DATEECHEANCE, DATEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as REFTIRE, <span style="color: #0000ff;">null</span> as REFTIREUR, <span style="color: #0000ff;">null</span> as NERISOTIREUR, 
	 ACCEPTATION, MONTANTORIGINE, REFD6OPINITIALE, REFEMETTEURPAPAYE, NERISODESTINATAIRE, NERISOEMETTEUR, <span style="color: #0000ff;">null</span> as DATEREGLTIMAGEQUECHUAORIGINE, <span style="color: #0000ff;">null</span> as NOMDUTIREUR, <span style="color: #0000ff;">null</span> as NUMEROQUECHUA, <span style="color: #0000ff;">null</span> as PRENOMDUTIREUR, <span style="color: #0000ff;">null</span> as HUADUCOMPTABLE, <span style="color: #0000ff;">null</span> as LIBELLE1, <span style="color: #0000ff;">null</span> as LIBELLE2, 
	 <span style="color: #0000ff;">null</span> as TYPEPILOTISVUGM, <span style="color: #cc66cc;">12</span> as clazz_ from FEPPREJET_FREJ 
	 union all select FEPP_ID, CODECOMPLTSTRUCT, CODEIC, CODESTRUCT, DATE, ETATOPE, LIBELLEPOSTE, MONTANT, VERSION, ANOP_ID_ANOOPERATION, COFI_ID_PATRONYFICTIF, JORE_ID_JOURNALRECEPTION, 
	 SEME_ID_SELECTIONMELIF, ARTICLEORIGINE, CODELIAMLISSEMENTDESTINATAIRE, CODEMELINADESTINATAIRE, CODESCR, DATEPRESENTATION, CATEGORIEFLUXFINANCIER, NATUREDETAILLEE, NOMDESTINATAIRE, GINGERDESTINATAIRE, CODELIAMLISSEMENTEMETTEUR, CODEMELINAEMETTEUR, NNE, 
	 NOMEMETTEURDONNEURDORDRE, NUMEROENREGISTREMENT, COBD_ID_CODEOPERATION, <span style="color: #0000ff;">null</span> as VARIABLESELONAPPLI, APPL_ID_APPLICATION, <span style="color: #0000ff;">null</span> as MORE_ID_MOTIFRETOUR, <span style="color: #0000ff;">null</span> as CODELIAMCORRIGE, <span style="color: #0000ff;">null</span> as CODEMELINACORRIGE, <span style="color: #0000ff;">null</span> as DATEREGLTOPINITIALE, <span style="color: #0000ff;">null</span> as NUMBRUTCORRIGE, 
	 <span style="color: #0000ff;">null</span> as DATEECHEANCELCR, LIBELLEABREVDOMICILIATION, <span style="color: #0000ff;">null</span> as REFDESTINATAIRE, <span style="color: #0000ff;">null</span> as REFFINANCIALHEA, <span style="color: #0000ff;">null</span> as REFEMETTEURCORRECTION, <span style="color: #0000ff;">null</span> as REFOPINITIALE, <span style="color: #0000ff;">null</span> as NERISOFINANCIALHEA, GINGEREMETTEUR, REFPRESENTATEUR, CODEACCEPTATION, CODEENTREEPORTEFEUILLE, 
	 DATECREATION, DATEECHEANCE, DATEENTREEPORTEFEUILLE, REFTIRE, REFTIREUR, NERISOTIREUR, <span style="color: #0000ff;">null</span> as ACCEPTATION, <span style="color: #0000ff;">null</span> as MONTANTORIGINE, <span style="color: #0000ff;">null</span> as REFD6OPINITIALE, <span style="color: #0000ff;">null</span> as REFEMETTEURPAPAYE, <span style="color: #0000ff;">null</span> as NERISODESTINATAIRE, <span style="color: #0000ff;">null</span> as NERISOEMETTEUR, <span style="color: #0000ff;">null</span> as DATEREGLTIMAGEQUECHUAORIGINE, 
	 <span style="color: #0000ff;">null</span> as NOMDUTIREUR, <span style="color: #0000ff;">null</span> as NUMEROQUECHUA, <span style="color: #0000ff;">null</span> as PRENOMDUTIREUR, <span style="color: #0000ff;">null</span> as HUADUCOMPTABLE, <span style="color: #0000ff;">null</span> as LIBELLE1, <span style="color: #0000ff;">null</span> as LIBELLE2, <span style="color: #0000ff;">null</span> as TYPEPILOTISVUGM, <span style="color: #cc66cc;">11</span> as clazz_ from FEPPLCR_FLCR 
	 union all select FEPP_ID, CODECOMPLTSTRUCT, CODEIC, CODESTRUCT, DATE, 
	 ETATOPE, LIBELLEPOSTE, MONTANT, VERSION, ANOP_ID_ANOOPERATION, COFI_ID_PATRONYFICTIF, JORE_ID_JOURNALRECEPTION, SEME_ID_SELECTIONMELIF, ARTICLEORIGINE, CODELIAMLISSEMENTDESTINATAIRE, CODEMELINADESTINATAIRE, CODESCR, DATEPRESENTATION, CATEGORIEFLUXFINANCIER, 
	 NATUREDETAILLEE, NOMDESTINATAIRE, GINGERDESTINATAIRE, CODELIAMLISSEMENTEMETTEUR, CODEMELINAEMETTEUR, NNE, NOMEMETTEURDONNEURDORDRE, NUMEROENREGISTREMENT, COBD_ID_CODEOPERATION, <span style="color: #0000ff;">null</span> as VARIABLESELONAPPLI, APPL_ID_APPLICATION, <span style="color: #0000ff;">null</span> as MORE_ID_MOTIFRETOUR, <span style="color: #0000ff;">null</span> as 
	 CODELIAMCORRIGE, <span style="color: #0000ff;">null</span> as CODEMELINACORRIGE, <span style="color: #0000ff;">null</span> as DATEREGLTOPINITIALE, <span style="color: #0000ff;">null</span> as NUMBRUTCORRIGE, <span style="color: #0000ff;">null</span> as DATEECHEANCELCR, LIBELLEABREVDOMICILIATION, <span style="color: #0000ff;">null</span> as REFDESTINATAIRE, <span style="color: #0000ff;">null</span> as REFFINANCIALHEA, <span style="color: #0000ff;">null</span> as REFEMETTEURCORRECTION, <span style="color: #0000ff;">null</span> as REFOPINITIALE, <span style="color: #0000ff;">null</span> as NERISOFINANCIALHEA, 
	 GINGEREMETTEUR, REFPRESENTATEUR, <span style="color: #0000ff;">null</span> as CODEACCEPTATION, <span style="color: #0000ff;">null</span> as CODEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as DATECREATION, <span style="color: #0000ff;">null</span> as DATEECHEANCE, <span style="color: #0000ff;">null</span> as DATEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as REFTIRE, <span style="color: #0000ff;">null</span> as REFTIREUR, <span style="color: #0000ff;">null</span> as NERISOTIREUR, <span style="color: #0000ff;">null</span> as ACCEPTATION, <span style="color: #0000ff;">null</span> as MONTANTORIGINE, 
	 <span style="color: #0000ff;">null</span> as REFD6OPINITIALE, <span style="color: #0000ff;">null</span> as REFEMETTEURPAPAYE, <span style="color: #0000ff;">null</span> as NERISODESTINATAIRE, <span style="color: #0000ff;">null</span> as NERISOEMETTEUR, DATEREGLTIMAGEQUECHUAORIGINE, NOMDUTIREUR, NUMEROQUECHUA, PRENOMDUTIREUR, HUADUCOMPTABLE, <span style="color: #0000ff;">null</span> as LIBELLE1, <span style="color: #0000ff;">null</span> as LIBELLE2, <span style="color: #0000ff;">null</span> as TYPEPILOTISVUGM, <span style="color: #cc66cc;">13</span> 
	 as clazz_ from FEPPPIM_FPIM 
	 union all
	 select FEPP_ID, CODECOMPLTSTRUCT, CODEIC, CODESTRUCT, DATE, ETATOPE, LIBELLEPOSTE, MONTANT, VERSION, ANOP_ID_ANOOPERATION, COFI_ID_PATRONYFICTIF, JORE_ID_JOURNALRECEPTION, SEME_ID_SELECTIONMELIF, ARTICLEORIGINE, CODELIAMLISSEMENTDESTINATAIRE, 
	 CODEMELINADESTINATAIRE, CODESCR, DATEPRESENTATION, CATEGORIEFLUXFINANCIER, NATUREDETAILLEE, NOMDESTINATAIRE, GINGERDESTINATAIRE, CODELIAMLISSEMENTEMETTEUR, CODEMELINAEMETTEUR, NNE, NOMEMETTEURDONNEURDORDRE, NUMEROENREGISTREMENT, COBD_ID_CODEOPERATION, 
	 <span style="color: #0000ff;">null</span> as VARIABLESELONAPPLI, APPL_ID_APPLICATION, <span style="color: #0000ff;">null</span> as MORE_ID_MOTIFRETOUR, <span style="color: #0000ff;">null</span> as CODELIAMCORRIGE, <span style="color: #0000ff;">null</span> as CODEMELINACORRIGE, <span style="color: #0000ff;">null</span> as DATEREGLTOPINITIALE, <span style="color: #0000ff;">null</span> as NUMBRUTCORRIGE, <span style="color: #0000ff;">null</span> as DATEECHEANCELCR, LIBELLEABREVDOMICILIATION, <span style="color: #0000ff;">null</span> as REFDESTINATAIRE, 
	 <span style="color: #0000ff;">null</span> as REFFINANCIALHEA, <span style="color: #0000ff;">null</span> as REFEMETTEURCORRECTION, <span style="color: #0000ff;">null</span> as REFOPINITIALE, <span style="color: #0000ff;">null</span> as NERISOFINANCIALHEA, GINGEREMETTEUR, REFPRESENTATEUR, <span style="color: #0000ff;">null</span> as CODEACCEPTATION, <span style="color: #0000ff;">null</span> as CODEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as DATECREATION, <span style="color: #0000ff;">null</span> as DATEECHEANCE, <span style="color: #0000ff;">null</span> as DATEENTREEPORTEFEUILLE, 
	 <span style="color: #0000ff;">null</span> as REFTIRE, <span style="color: #0000ff;">null</span> as REFTIREUR, <span style="color: #0000ff;">null</span> as NERISOTIREUR, <span style="color: #0000ff;">null</span> as ACCEPTATION, <span style="color: #0000ff;">null</span> as MONTANTORIGINE, <span style="color: #0000ff;">null</span> as REFD6OPINITIALE, <span style="color: #0000ff;">null</span> as REFEMETTEURPAPAYE, <span style="color: #0000ff;">null</span> as NERISODESTINATAIRE, <span style="color: #0000ff;">null</span> as NERISOEMETTEUR, <span style="color: #0000ff;">null</span> as DATEREGLTIMAGEQUECHUAORIGINE, <span style="color: #0000ff;">null</span> as NOMDUTIREUR, <span style="color: #0000ff;">null</span> as NUMEROQUECHUA, 
	 <span style="color: #0000ff;">null</span> as PRENOMDUTIREUR, <span style="color: #0000ff;">null</span> as HUADUCOMPTABLE, LIBELLE1, LIBELLE2, TYPEPILOTISVUGM, <span style="color: #cc66cc;">14</span> as clazz_ from FEPPTIPVIR_FVIR <span class="br0">&#41;</span> fepp0_ inner join JOURNALRECEPTIO_JORE journalrec3_ on fepp0_.JORE_ID_JOURNALRECEPTION=journalrec3_.JORE_ID inner join CODEOPERATION_COBD codeoperat8_ 
	 on fepp0_.COBD_ID_CODEOPERATION=codeoperat8_.COBD_ID cross join <span class="br0">&#40;</span> select FEPP_ID, CODECOMPLTSTRUCT, CODEIC, CODESTRUCT, DATE, ETATOPE, LIBELLEPOSTE, MONTANT, VERSION, ANOP_ID_ANOOPERATION, COFI_ID_PATRONYFICTIF, JORE_ID_JOURNALRECEPTION, SEME_ID_SELECTIONMELIF, 
	 ARTICLEORIGINE, CODELIAMLISSEMENTDESTINATAIRE, CODEMELINADESTINATAIRE, CODESCR, DATEPRESENTATION, CATEGORIEFLUXFINANCIER, NATUREDETAILLEE, NOMDESTINATAIRE, GINGERDESTINATAIRE, CODELIAMLISSEMENTEMETTEUR, CODEMELINAEMETTEUR, NNE, NOMEMETTEURDONNEURDORDRE, NUMEROENREGISTREMENT, 
	 COBD_ID_CODEOPERATION, LIBELLEABREVDOMICILIATION, GINGEREMETTEUR, REFPRESENTATEUR, APPL_ID_APPLICATION, CODEACCEPTATION, CODEENTREEPORTEFEUILLE, DATECREATION, DATEECHEANCE, DATEENTREEPORTEFEUILLE, REFTIRE, REFTIREUR, NERISOTIREUR, <span style="color: #0000ff;">null</span> as DATEREGLTIMAGEQUECHUAORIGINE, 
	 <span style="color: #0000ff;">null</span> as NOMDUTIREUR, <span style="color: #0000ff;">null</span> as NUMEROQUECHUA, <span style="color: #0000ff;">null</span> as PRENOMDUTIREUR, <span style="color: #0000ff;">null</span> as HUADUCOMPTABLE, <span style="color: #0000ff;">null</span> as LIBELLE1, <span style="color: #0000ff;">null</span> as LIBELLE2, <span style="color: #0000ff;">null</span> as TYPEPILOTISVUGM, <span style="color: #cc66cc;">11</span> as clazz_ from FEPPLCR_FLCR 
	 union all select FEPP_ID, CODECOMPLTSTRUCT, CODEIC, CODESTRUCT, DATE, ETATOPE, LIBELLEPOSTE, MONTANT, VERSION, ANOP_ID_ANOOPERATION, COFI_ID_PATRONYFICTIF, JORE_ID_JOURNALRECEPTION, SEME_ID_SELECTIONMELIF, ARTICLEORIGINE, CODELIAMLISSEMENTDESTINATAIRE, 
	 CODEMELINADESTINATAIRE, CODESCR, DATEPRESENTATION, CATEGORIEFLUXFINANCIER, NATUREDETAILLEE, NOMDESTINATAIRE, GINGERDESTINATAIRE, CODELIAMLISSEMENTEMETTEUR, CODEMELINAEMETTEUR, NNE, NOMEMETTEURDONNEURDORDRE, NUMEROENREGISTREMENT, COBD_ID_CODEOPERATION, 
	 LIBELLEABREVDOMICILIATION, GINGEREMETTEUR, REFPRESENTATEUR, APPL_ID_APPLICATION, <span style="color: #0000ff;">null</span> as CODEACCEPTATION, <span style="color: #0000ff;">null</span> as CODEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as DATECREATION, <span style="color: #0000ff;">null</span> as DATEECHEANCE, <span style="color: #0000ff;">null</span> as DATEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as REFTIRE, <span style="color: #0000ff;">null</span> as REFTIREUR, <span style="color: #0000ff;">null</span> as NERISOTIREUR, 
	 DATEREGLTIMAGEQUECHUAORIGINE, NOMDUTIREUR, NUMEROQUECHUA, PRENOMDUTIREUR, HUADUCOMPTABLE, <span style="color: #0000ff;">null</span> as LIBELLE1, <span style="color: #0000ff;">null</span> as LIBELLE2, <span style="color: #0000ff;">null</span> as TYPEPILOTISVUGM, <span style="color: #cc66cc;">13</span> as clazz_ from FEPPPIM_FPIM 
	 union all select FEPP_ID, CODECOMPLTSTRUCT, CODEIC, CODESTRUCT, DATE, ETATOPE, LIBELLEPOSTE, MONTANT, VERSION, ANOP_ID_ANOOPERATION, COFI_ID_PATRONYFICTIF, JORE_ID_JOURNALRECEPTION, SEME_ID_SELECTIONMELIF, ARTICLEORIGINE, CODELIAMLISSEMENTDESTINATAIRE, 
	 CODEMELINADESTINATAIRE, CODESCR, DATEPRESENTATION, CATEGORIEFLUXFINANCIER, NATUREDETAILLEE, NOMDESTINATAIRE, GINGERDESTINATAIRE, CODELIAMLISSEMENTEMETTEUR, CODEMELINAEMETTEUR, NNE, NOMEMETTEURDONNEURDORDRE, NUMEROENREGISTREMENT, COBD_ID_CODEOPERATION, 
	 LIBELLEABREVDOMICILIATION, GINGEREMETTEUR, REFPRESENTATEUR, APPL_ID_APPLICATION, <span style="color: #0000ff;">null</span> as CODEACCEPTATION, <span style="color: #0000ff;">null</span> as CODEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as DATECREATION, <span style="color: #0000ff;">null</span> as DATEECHEANCE, <span style="color: #0000ff;">null</span> as DATEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as REFTIRE, <span style="color: #0000ff;">null</span> as REFTIREUR, <span style="color: #0000ff;">null</span> as 
	 NERISOTIREUR, <span style="color: #0000ff;">null</span> as DATEREGLTIMAGEQUECHUAORIGINE, <span style="color: #0000ff;">null</span> as NOMDUTIREUR, <span style="color: #0000ff;">null</span> as NUMEROQUECHUA, <span style="color: #0000ff;">null</span> as PRENOMDUTIREUR, <span style="color: #0000ff;">null</span> as HUADUCOMPTABLE, LIBELLE1, LIBELLE2, TYPEPILOTISVUGM, <span style="color: #cc66cc;">14</span> as clazz_ from FEPPTIPVIR_FVIR <span class="br0">&#41;</span> fepppartenaire1_ left outer join APPLICATION_APPL applicatio4_ 
	 on fepppartenaire1_.APPL_ID_APPLICATION=applicatio4_.APPL_ID cross join <span class="br0">&#40;</span> select FEPP_ID, CODECOMPLTSTRUCT, CODEIC, CODESTRUCT, DATE, ETATOPE, LIBELLEPOSTE, MONTANT, VERSION, ANOP_ID_ANOOPERATION, COFI_ID_PATRONYFICTIF, JORE_ID_JOURNALRECEPTION, 
	 SEME_ID_SELECTIONMELIF, ARTICLEORIGINE, CODELIAMLISSEMENTDESTINATAIRE, CODEMELINADESTINATAIRE, CODESCR, DATEPRESENTATION, CATEGORIEFLUXFINANCIER, NATUREDETAILLEE, NOMDESTINATAIRE, GINGERDESTINATAIRE, CODELIAMLISSEMENTEMETTEUR, CODEMELINAEMETTEUR, NNE, 
	 NOMEMETTEURDONNEURDORDRE, NUMEROENREGISTREMENT, COBD_ID_CODEOPERATION, VARIABLESELONAPPLI, APPL_ID_APPLICATION, MORE_ID_MOTIFRETOUR, CODELIAMCORRIGE, CODEMELINACORRIGE, DATEREGLTOPINITIALE, NUMBRUTCORRIGE, DATEECHEANCELCR, LIBELLEABREVDOMICILIATION, REFDESTINATAIRE, 
	 REFFINANCIALHEA, REFEMETTEURCORRECTION, REFOPINITIALE, NERISOFINANCIALHEA, <span style="color: #0000ff;">null</span> as ACCEPTATION, <span style="color: #0000ff;">null</span> as CODEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as DATECREATION, <span style="color: #0000ff;">null</span> as DATEENTREEPORTEFEUILLE, <span style="color: #0000ff;">null</span> as MONTANTORIGINE, <span style="color: #0000ff;">null</span> as REFD6OPINITIALE, <span style="color: #0000ff;">null</span> as REFEMETTEURPAPAYE, 
	 <span style="color: #0000ff;">null</span> as NERISODESTINATAIRE, <span style="color: #0000ff;">null</span> as NERISOEMETTEUR, <span style="color: #cc66cc;">9</span> as clazz_ from FEPPCORR_FCOR 
	 union all select FEPP_ID, CODECOMPLTSTRUCT, CODEIC, CODESTRUCT, DATE, ETATOPE, LIBELLEPOSTE, MONTANT, VERSION, ANOP_ID_ANOOPERATION, COFI_ID_PATRONYFICTIF, JORE_ID_JOURNALRECEPTION, SEME_ID_SELECTIONMELIF, ARTICLEORIGINE, CODELIAMLISSEMENTDESTINATAIRE, 
	 CODEMELINADESTINATAIRE, CODESCR, DATEPRESENTATION, CATEGORIEFLUXFINANCIER, NATUREDETAILLEE, NOMDESTINATAIRE, GINGERDESTINATAIRE, CODELIAMLISSEMENTEMETTEUR, CODEMELINAEMETTEUR, NNE, NOMEMETTEURDONNEURDORDRE, NUMEROENREGISTREMENT, COBD_ID_CODEOPERATION, 
	 VARIABLESELONAPPLI, APPL_ID_APPLICATION, MORE_ID_MOTIFRETOUR, <span style="color: #0000ff;">null</span> as CODELIAMCORRIGE, <span style="color: #0000ff;">null</span> as CODEMELINACORRIGE, DATEREGLTOPINITIALE, <span style="color: #0000ff;">null</span> as NUMBRUTCORRIGE, DATEECHEANCELCR, <span style="color: #0000ff;">null</span> as LIBELLEABREVDOMICILIATION, REFDESTINATAIRE, REFFINANCIALHEA, <span style="color: #0000ff;">null</span> as REFEMETTEURCORRECTION, 
	 <span style="color: #0000ff;">null</span> as REFOPINITIALE, <span style="color: #0000ff;">null</span> as NERISOFINANCIALHEA, ACCEPTATION, CODEENTREEPORTEFEUILLE, DATECREATION, DATEENTREEPORTEFEUILLE, MONTANTORIGINE, REFD6OPINITIALE, REFEMETTEURPAPAYE, NERISODESTINATAIRE, NERISOEMETTEUR, <span style="color: #cc66cc;">12</span> as clazz_ from FEPPREJET_FREJ <span class="br0">&#41;</span> 
	 feppeetour2_ left outer join APPLICATION_APPL applicatio5_ on feppeetour2_.APPL_ID_APPLICATION=applicatio5_.APPL_ID where fepp0_.JORE_ID_JOURNALRECEPTION=:<span style="color: #cc66cc;">2</span>  and fepp0_.ETATOPE=:<span style="color: #cc66cc;">3</span>  and <span class="br0">&#40;</span>journalrec3_.EMETTEUR in <span class="br0">&#40;</span>:<span style="color: #cc66cc;">4</span>  , :<span style="color: #cc66cc;">5</span> <span class="br0">&#41;</span><span class="br0">&#41;</span> 
	 group by fepp0_.CODEIC , fepp0_.CODESTRUCT , fepp0_.CODECOMPLTSTRUCT , fepp0_.DATE , fepp0_.NNE , 
	 <span style="color: #0000ff;">case</span> when fepp0_.clazz_=:<span style="color: #cc66cc;">6</span>  
	 then fepppartenaire1_.APPL_ID_APPLICATION 
	 <span style="color: #0000ff;">else</span> feppeetour2_.APPL_ID_APPLICATION end , fepp0_.COBD_ID_CODEOPERATION , journalrec3_.EMETTEUR order by fepp0_.CODEIC asc, fepp0_.CODESTRUCT asc, fepp0_.CODECOMPLTSTRUCT asc, fepp0_.DATE asc, fepp0_.NNE asc, 
	 <span style="color: #0000ff;">case</span> when fepp0_.clazz_=:<span style="color: #cc66cc;">7</span>  then fepppartenaire1_.APPL_ID_APPLICATION 
	 <span style="color: #0000ff;">else</span> feppeetour2_.APPL_ID_APPLICATION end asc, journalrec3_.EMETTEUR asc fetch first :<span style="color: #cc66cc;">8</span>  rows only;
	 Error Msg = ORA-<span style="color: #cc66cc;">00979</span>: n<span style="color: #FF0000;">'est pas une expression GROUP BY</span></pre></td></tr></table></code><hr />
</div>Au final, je ne vois plus du tout comment, dans le cas présent, réécrire la méthode en utilisant JPA.<br />
<br />
Merci pour votre aide.<br />
Cordialement,<br />
Thomas</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f737/java/general-java/persistance-donnees/jpa/">JPA</category>
			<dc:creator>Wise_Sherkaan</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184681/java/general-java/persistance-donnees/jpa/projection-vers-dto-requete-complexe/</guid>
		</item>
		<item>
			<title>Créer 2 entités liées avec JPA dans une application Spring Boot</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184078&amp;goto=newpost</link>
			<pubDate>Thu, 04 Jun 2026 12:49:55 GMT</pubDate>
			<description>Bonjour, je développe une...</description>
			<content:encoded><![CDATA[<div>Bonjour, je développe une petite application et essaye de Créer 2 entités liées avec JPA/hibernate dans une application Spring Boot<br />
<br />
Voilà les 2 entitées<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #339933;">@Entity</span>
<span style="color: #339933;">@Table</span><span class="br0">&#40;</span>name=<span style="color: #FF0000;">&quot;SUBSCRIPTION&quot;</span><span class="br0">&#41;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> Subscription  <span style="color: #0000ff;">implements</span> Serializable <span class="br0">&#123;</span>
    <span style="color: #339933;">@Id</span>
    <span style="color: #339933;">@GeneratedValue</span><span class="br0">&#40;</span>strategy= GenerationType.AUTO<span class="br0">&#41;</span>
    <span style="color: #0000ff;">private</span> Long id;
&nbsp;
    <span style="color: #339933;">@ManyToOne</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
    <span style="color: #339933;">@JoinColumn</span><span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;CLIENT_ID&quot;</span>, referencedColumnName = <span style="color: #FF0000;">&quot;ID&quot;</span>, nullable=<span style="color: #0000ff;">false</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">private</span> UserEntity user;
    ........
    .......
&nbsp;
and
&nbsp;
<span style="color: #339933;">@Entity</span>
<span style="color: #339933;">@Table</span><span class="br0">&#40;</span>name=<span style="color: #FF0000;">&quot;USER1&quot;</span><span class="br0">&#41;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> UserEntity <span style="color: #0000ff;">implements</span> Serializable <span class="br0">&#123;</span>
&nbsp;
    <span style="color: #339933;">@Id</span>
    <span style="color: #339933;">@GeneratedValue</span><span class="br0">&#40;</span>strategy= GenerationType.AUTO<span class="br0">&#41;</span>
    <span style="color: #0000ff;">private</span> Long id;
&nbsp;
    <span style="color: #339933;">@OneToMany</span><span class="br0">&#40;</span>mappedBy=<span style="color: #FF0000;">&quot;user&quot;</span>, cascade = CascadeType.MERGE<span class="br0">&#41;</span>
    <span style="color: #0000ff;">private</span> Set&lt;Subscription&gt; subscriptions;
    .....
    ......</pre></td></tr></table></code><hr />
</div>et dans cette méthode, j'essaye de créer une Subscription avec un UserEntity, qui existe déjà en base de données<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">public</span> SubscriptionDto createSubscription<span class="br0">&#40;</span>SubscriptionDto subscriptionDto<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    UserEntity user = <span style="color: #0000ff;">new</span> UserEntity<span class="br0">&#40;</span><span class="br0">&#41;</span>;
    user.setFirstName<span class="br0">&#40;</span>subscriptionDto.getUser<span class="br0">&#40;</span><span class="br0">&#41;</span>.getFirstName<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
    user.setLastName<span class="br0">&#40;</span>subscriptionDto.getUser<span class="br0">&#40;</span><span class="br0">&#41;</span>.getLastName<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
    user = <span style="color: #0000ff;">this</span>.userDao.update<span class="br0">&#40;</span>user<span class="br0">&#41;</span>;
    Subscription subscription = <span style="color: #0000ff;">new</span> Subscription<span class="br0">&#40;</span><span class="br0">&#41;</span>;
    subscription.setTypeOfSubscription<span class="br0">&#40;</span>subscriptionDto.getTypeOfSubscription<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
    subscription.setOptionsOfSubscription<span class="br0">&#40;</span>subscriptionDto.getOptionsOfSubscription<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
    subscription.setSubscriptionDate<span class="br0">&#40;</span><span style="color: #0000ff;">new</span> Date<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
    subscription.setUser<span class="br0">&#40;</span>user<span class="br0">&#41;</span>;
    subscription = <span style="color: #0000ff;">this</span>.subscriptionDao.update<span class="br0">&#40;</span>subscription<span class="br0">&#41;</span>;
&nbsp;
&nbsp;
avec 
&nbsp;
<span style="color: #0000ff;">public</span> T update<span class="br0">&#40;</span> T entity <span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span style="color: #0000ff;">return</span> entityManager.merge<span class="br0">&#40;</span> entity <span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
mais le système se plaint que le user existe déjà alors que j'ai  cascade = CascadeType.MERGE<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
jakarta.servlet.ServletException: Request processing failed: org.springframework.dao.DataIntegrityViolationException: could not execute statement <span class="br0">&#91;</span>ERROR: duplicate key value violates unique constraint <span style="color: #FF0000;">&quot;user1_pkey&quot;</span>
  D&eacute;tail : Key <span class="br0">&#40;</span>id<span class="br0">&#41;</span>=<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> already exists.<span class="br0">&#93;</span> <span class="br0">&#91;</span>insert into user1 <span class="br0">&#40;</span>first_name,last_name,id<span class="br0">&#41;</span> values <span class="br0">&#40;</span>?,?,?<span class="br0">&#41;</span><span class="br0">&#93;</span>; SQL <span class="br0">&#91;</span>insert into user1 <span class="br0">&#40;</span>first_name,last_name,id<span class="br0">&#41;</span> values <span class="br0">&#40;</span>?,?,?<span class="br0">&#41;</span><span class="br0">&#93;</span>; constraint <span class="br0">&#91;</span>user1_pkey<span class="br0">&#93;</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f737/java/general-java/persistance-donnees/jpa/">JPA</category>
			<dc:creator>flamant</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184078/java/general-java/persistance-donnees/jpa/creer-2-entites-liees-jpa-application-spring-boot/</guid>
		</item>
	</channel>
</rss>
