IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Mapping : récupérer dans une property l'élément le plus récent d'une collection


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 17
    Points
    17
    Par défaut Mapping : récupérer dans une property l'élément le plus récent d'une collection
    Bonjour à tous,

    Je me retrouve actuellement confronté à un problème de mapping hibernate. En base j'ai une relation de type 0,n entre ma table Commande et ma table LigneConteneur. Hors dans mon mapping j'aurais voulu récupérer dans une property une seule ligneConteneur, la plus récente, c-a-d celle qui a l'id le plus grand.

    Actuellement le jeu de données que j'ai fait que j'ai maximum 1 ligneConteneur par commande et je passe par un one-to-one dans Commande et un many-to-one unique dans ligneConteneur. Hors je me doute bien que ça risque pas de me renvoyer le dernier, et d'ailleurs je pense que ça plantera quand il y a aura effectivement plusieurs ligneConteneur par commande.

    Dois-je essayer de passer par des formula avec des sous-requêtes?

    Voici mes mappings:

    Commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
      <class name="com.portail.businessdata.bo.CmdCommande" table="sat_ordr">
     
    		<composite-id name="id" class="com.heppner.portail.sove.business.data.bo.CmdCommandeId">
    			<key-property column="cod_soc" name="codeSoc" type="string" />
    			<key-property column="cod_eta" name="codeEta"	type="string" />
    			<key-property column="typ_uat" name="typeUat"	type="string" />
    			<key-property column="num_uat" name="numUat"	type="string" />
    		</composite-id>
     
    .
    .		
    .		
     
        <one-to-one class="com.portail.business.data.bo.CmdLigneConteneur" name="ligneConteneur" property-ref="commande" />
     
     
     
     
      </class>
    </hibernate-mapping>
    ligneConteneur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
    	<class name="com.portail.business.data.bo.CmdLigneConteneur" table="sat_litc">
     
    		<id name="id" type="int">
    			<column name="cle_lit" />
    			<generator class="identity" />
    		</id>
     
     
     
     
    <many-to-one name="commande" class="com.portail.business.data.bo.CmdCommande" unique="true" insert="false" update="false">      
    <column name="cod_soc" />
    <column name="cod_eta" />
    <column name="typ_uat" />
    <column name="num_uat" />
    </many-to-one>
     
    </class>
    </hibernate-mapping>
    Je sèche Merci d'avance!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 17
    Points
    17
    Par défaut
    Je suis toujours en quête d'un coup de main sur ce sujet, je me suis remis sur le projet et je bloque toujours là-dessus

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Regarde du côté du chargement personnalisé en SQL :
    http://docs.jboss.org/hibernate/core...#querysql-load

  4. #4
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Sinon, tu peux mapper la collection triée, et avoir une propriété qui récupère le 1er élément quand il existe. Bien sûr ça oblige à ramener toute la collection, ce dont tu n'as pas forcément besoin.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 17
    Points
    17
    Par défaut
    Bonjour, j'ai réussi à m'en sortir de la sorte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <one-to-one name="test" class="com.portail.business.data.bo.CmdLigneConteneur" property-ref="commande" formula="(select lc from cmd_lc lc group by cod_soc, cod_eta, num_uat, num having cle_lit = min(cle_lit))"/>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/10/2014, 08h17
  2. [vXIr2] valeur la plus récente d'une table
    Par schkrumble dans le forum Designer
    Réponses: 5
    Dernier message: 02/02/2010, 14h29
  3. Réponses: 5
    Dernier message: 02/05/2008, 15h28
  4. Réponses: 3
    Dernier message: 08/12/2005, 02h42
  5. Réponses: 17
    Dernier message: 08/07/2005, 18h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo