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

Spring Java Discussion :

[Bonne pratique] Quel est votre conseil pour un select union avec Spring data


Sujet :

Spring Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut [Bonne pratique] Quel est votre conseil pour un select union avec Spring data
    Bonjour,

    je suis nouveau dans le domaine de spring, alors je viens vers vous pour vous demander vos conseils sur la bonne façon de faire les choses.

    Je souhaiterais récupérer les résultats d'une requête de plusieurs tables sans relations directes (pas de JOIN possible entre leurs attributs) qui peut être représentée sous la forme :

    select data1, data2
    from table1
    union
    select data1, data2
    from table2

    Je connais la façon de faire avec les ResultSet comme ici : http://www.java2s.com/Code/Java/Data...acleDriver.htm

    Avec spring data, les tables sont créées sous forme de repository comme le montre l'exemple ici avec la table "Person" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public interface PersonRepository extends JpaRepository<Person, Long> {
     
        /**
         * Finds a person by using the last name as a search criteria.
         * @param lastName
         * @return  A list of persons whose last name is an exact match with the given last name.
         *          If no persons is found, this method returns an empty list.
         */
        @Query("SELECT p FROM Person p WHERE LOWER(p.lastName) = LOWER(:lastName)")
        public List<Person> find(@Param("lastName") String lastName);
    }

    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
    24
    @Entity
    public class Customer {
     
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private Long id;
        private String firstName;
        private String lastName;
     
        protected Customer() {}
     
        public Customer(String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
        }
     
        @Override
        public String toString() {
            return String.format(
                    "Customer[id=%d, firstName='%s', lastName='%s']",
                    id, firstName, lastName);
        }
     
    }
    Après avoir situé le contexte, voici ma question :
    Savez-vous comment je pourrais remplacer la façon de faire avec Resultset pour faire cela avec Spring ?

  2. #2
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 135
    Points : 391
    Points
    391
    Par défaut
    Ne peut tu pas faire un héritage objet ?

    si c'est le cas, tu pourra faire ta query sur ta classe mère.

    regarde l'annotation @Inheritance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @Entity
    @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
    public class ClasseMere implements Serializable {
     
    private string data1;
    private string data2;
     
    /** getter / setter* */
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @Entity
    @Table(name="classe_fille_1")
    public class ClasseFille1 extends ClasseMere {
     
    /*** des trucs **/
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @Entity
    @Table(name="classe_fille_2")
    public class ClasseFille2 extends ClasseMere {
     
    /*** des trucs **/
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @Query("SELECT ClasseMere FROM ClasseMere m WHERE m.data1 = data1")
    public List<ClasseMere> find(@Param("data1") String data1);

Discussions similaires

  1. Quel est votre EDI préféré pour Qt ?
    Par superjaja dans le forum Qt
    Réponses: 42
    Dernier message: 08/06/2010, 16h07
  2. Quel est votre framework RIA favori pour Flash/Flex ?
    Par Community Management dans le forum Flash/Flex
    Réponses: 4
    Dernier message: 02/11/2009, 09h09
  3. Quel est votre livre préféré pour Mac ?
    Par Marcos Ickx dans le forum Apple
    Réponses: 15
    Dernier message: 20/02/2009, 12h41
  4. Quel ETL est à me conseiller pour une migration de bases ?
    Par Arvulis dans le forum Alimentation
    Réponses: 10
    Dernier message: 27/10/2006, 15h39

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