Huge hibernate request (6000s lines) 5 = ok, 6 = ko

Hi,

I feel like there is a recursive loop for joins to dependencies.
This is when loading a collection.

I had no problem in hibernate 5.0 and it appeared in hibernate 6.0

I’m also looking back on my side if I can intervene with a FetchMode.

An idea ?

This query is more than 6000 lines…

Select 
...
      c1_1.TYPESOUSCRIPTION,
        c1_1.TYPETENSIONCONTRATSUSPENDU,
        c1_1.TYPETERME 
    from
        AFFAIRE_CONTRATS c1_0 
    join
        TCONTRAT c1_1 
            on c1_1.ID=c1_0.DEST 
    left join
        (TACTEUR c2_0 
    left join
        TPERSONNEMORALE c2_1 
            on c2_0.ID=c2_1.ID) 
                on c2_0.ID=c1_1.CENTRERATTACHEMENTIEG_ID 
        left join
            ( select
                ID, ACTEURCREATION, ACTEURMODIFICATION, ACTEURSUPPRESSION, AGENCE, DATECREATION, DATEMODIFICATION, DATESUPPRESSION, ETATOBJET, CODEPOSTAL, COMMUNE, LIGNE2LOCAL, LIGNE3BATIMENT, LIGNE5COMPLEMENT, NIVEAUDECONTROLE, NUMERO, TYPEADRESSEPOSTALE, VOIE, DONNEEGEOGRAPHIQUE_ID, ESPACEDELIVRAISON_ID, 1 as clazz_ 
            from
                TADRESSEPOSTALE ) a1_0 
                on a1_0.ID=c2_0.ADRESSEPOSTALE_ID 
        left join
            TDONNEEGEOGRAPHIQUE d1_0 
                on d1_0.ID=a1_0.DONNEEGEOGRAPHIQUE_ID 
        left join
            (TACTEUR a2_0 
        left join
            TACTEURINTERNE a2_1 
                on a2_0.ID=a2_1.ID 
        left join
            TAGENCEBANCAIRE a2_2 
                on a2_0.ID=a2_2.ID 
        left join
            TPERSONNEPHYSIQUE a2_3 
                on a2_0.ID=a2_3.ID 
        left join
            TPARTENAIRE a2_4 
                on a2_0.ID=a2_4.ID 
        left join
            TPERSONNEMORALE a2_5 
                on a2_0.ID=a2_5.ID) 
                    on a2_0.ID=d1_0.ACTEURASSOCIE_ID 
            left join
                TMODELEOBJETMETIER m1_0 
                    on m1_0.ID=a2_0.MODELEACTEUR_ID 
            left join
                (TACTEUR o1_0 
            left join
                TACTEURINTERNE o1_1 
                    on o1_0.ID=o1_1.ID 
            left join
                TAGENCEBANCAIRE o1_2 
                    on o1_0.ID=o1_2.ID 
            left join
                TPERSONNEPHYSIQUE o1_3 
                    on o1_0.ID=o1_3.ID 
            left join
                TPARTENAIRE o1_4 
                    on o1_0.ID=o1_4.ID 
            left join
                TPERSONNEMORALE o1_5 
                    on o1_0.ID=o1_5.ID) 
                        on o1_0.ID=a2_3.OBJETMAITRE_ID 
                left join
                    TMODELEOBJETMETIER m2_0 
                        on m2_0.ID=o1_0.MODELEACTEUR_ID 
                left join
                    (TACTEUR s1_0 
                left join
                    TPERSONNEMORALE s1_1 
                        on s1_0.ID=s1_1.ID) 
                            on s1_0.ID=o1_5.SUPERIEUR_ID 
                    left join
                        TMODELEOBJETMETIER m3_0 
                            on m3_0.ID=s1_0.MODELEACTEUR_ID 
                    left join
                        (TACTEUR s2_0 
                    left join
                        TPERSONNEMORALE s2_1 
                            on s2_0.ID=s2_1.ID) 
                                on s2_0.ID=a2_5.SUPERIEUR_ID 
                        left join
                            TMODELEOBJETMETIER m4_0 
                                on m4_0.ID=s2_0.MODELEACTEUR_ID 
                        left join
                            TCODEPOSTAL c3_0 
                                on c3_0.ID=d1_0.CP_ID 
                        left join
                            TDONNEEGEOGRAPHIQUE d2_0 
                                on d2_0.ID=d1_0.DONNEEGEOGRAPHIQUESUPERIEURE 
                        left join
                            (TACTEUR a3_0 
                        left join
                            TACTEURINTERNE a3_1 
                                on a3_0.ID=a3_1.ID 
                        left join
                            TAGENCEBANCAIRE a3_2 
                                on a3_0.ID=a3_2.ID 
                        left join
                            TPERSONNEPHYSIQUE a3_3 
                                on a3_0.ID=a3_3.ID 
                        left join
                            TPARTENAIRE a3_4 
                                on a3_0.ID=a3_4.ID 
                        left join
                            TPERSONNEMORALE a3_5 
                                on a3_0.ID=a3_5.ID) 
                                    on a3_0.ID=d2_0.ACTEURASSOCIE_ID 
                            left join
                                TMODELEOBJETMETIER m5_0 
                                    on m5_0.ID=a3_0.MODELEACTEUR_ID 
                            left join
                                (TACTEUR o2_0 
                            left join
                                TACTEURINTERNE o2_1 
                                    on o2_0.ID=o2_1.ID 
                            left join
                                TAGENCEBANCAIRE o2_2 
                                    on o2_0.ID=o2_2.ID 
                            left join
                                TPERSONNEPHYSIQUE o2_3 
                                    on o2_0.ID=o2_3.ID 
                            left join
                                TPARTENAIRE o2_4 
                                    on o2_0.ID=o2_4.ID 
                            left join
                                TPERSONNEMORALE o2_5 
                                    on o2_0.ID=o2_5.ID) 
                                        on o2_0.ID=a3_3.OBJETMAITRE_ID 
                                left join
                                    TMODELEOBJETMETIER m6_0 
                                        on m6_0.ID=o2_0.MODELEACTEUR_ID 
                                left join
                                    (TACTEUR s3_0 
                                left join
                                    TPERSONNEMORALE s3_1 
                                        on s3_0.ID=s3_1.ID) 
                                            on s3_0.ID=o2_5.SUPERIEUR_ID 
                                    left join
                                        TMODELEOBJETMETIER m7_0 
                                            on m7_0.ID=s3_0.MODELEACTEUR_ID 
                                    left join
                                        (TACTEUR s4_0 
                                    left join
                                        TPERSONNEMORALE s4_1 
                                            on s4_0.ID=s4_1.ID) 
                                                on s4_0.ID=a3_5.SUPERIEUR_ID 
                                        left join
                                            TMODELEOBJETMETIER m8_0 
                                                on m8_0.ID=s4_0.MODELEACTEUR_ID 
                                        left join
                                            TCODEPOSTAL c4_0 
                                                on c4_0.ID=d2_0.CP_ID 
                                        left join
                                            TMODELEOBJETMETIER m9_0 
                                                on m9_0.ID=c2_0.MODELEACTEUR_ID 
                                        left join
                                            (TACTEUR s5_0 
                                        left join
                                            TPERSONNEMORALE s5_1 
                                                on s5_0.ID=s5_1.ID) 
                                                    on s5_0.ID=c2_1.SUPERIEUR_ID 
                                            left join
                                                ( select
                                                    ID, ACTEURCREATION, ACTEURMODIFICATION, ACTEURSUPPRESSION, AGENCE, DATECREATION, DATEMODIFICATION, DATESUPPRESSION, ETATOBJET, CODEPOSTAL, COMMUNE, LIGNE2LOCAL, LIGNE3BATIMENT, LIGNE5COMPLEMENT, NIVEAUDECONTROLE, NUMERO, TYPEADRESSEPOSTALE, VOIE, DONNEEGEOGRAPHIQUE_ID, ESPACEDELIVRAISON_ID, 1 as clazz_ 
                                                from
                                                    TADRESSEPOSTALE ) a4_0 
                                                    on a4_0.ID=s5_0.ADRESSEPOSTALE_ID 
                                            left join
                                                TDONNEEGEOGRAPHIQUE d3_0 
                                                    on d3_0.ID=a4_0.DONNEEGEOGRAPHIQUE_ID 
                                            left join
                                                (TACTEUR a5_0 
                                            left join
                                                TACTEURINTERNE a5_1 
                                                    on a5_0.ID=a5_1.ID 
                                            left join
                                                TAGENCEBANCAIRE a5_2 
                                                    on a5_0.ID=a5_2.ID 
                                            left join
                                                TPERSONNEPHYSIQUE a5_3 
                                                    on a5_0.ID=a5_3.ID 
                                            left join
                                                TPARTENAIRE a5_4 
                                                    on a5_0.ID=a5_4.ID 
                                            left join
                                                TPERSONNEMORALE a5_5 
                                                    on a5_0.ID=a5_5.ID) 
                                                        on a5_0.ID=d3_0.ACTEURASSOCIE_ID 
                                                left join
                                                    TMODELEOBJETMETIER m10_0 
                                                        on m10_0.ID=a5_0.MODELEACTEUR_ID 
                                                left join
                                                    (TACTEUR o3_0 
                                                left join
                                                    TACTEURINTERNE o3_1 
                                                        on o3_0.ID=o3_1.ID 
                                                left join
                                                    TAGENCEBANCAIRE o3_2 
                                                        on o3_0.ID=o3_2.ID 
                                                left join
                                                    TPERSONNEPHYSIQUE o3_3 
                                                        on o3_0.ID=o3_3.ID 
                                                left join
                                                    TPARTENAIRE o3_4 
                                                        on o3_0.ID=o3_4.ID 
                                                left join
                                                    TPERSONNEMORALE o3_5 
                                                        on o3_0.ID=o3_5.ID) 
                                                            on o3_0.ID=a5_3.OBJETMAITRE_ID 
                                                    left join
                                                        TMODELEOBJETMETIER m11_0 
                                                            on m11_0.ID=o3_0.MODELEACTEUR_ID 
                                                    left join
                                                        TCODEPOSTAL c5_0 
                                                            on c5_0.ID=d3_0.CP_ID 
                                                    left join
                                                        TDONNEEGEOGRAPHIQUE d4_0 
                                                            on d4_0.ID=d3_0.DONNEEGEOGRAPHIQUESUPERIEURE 
                                                    left join
                                                        (TACTEUR a6_0 
                                                    left join
                                                        TACTEURINTERNE a6_1 
                                                            on a6_0.ID=a6_1.ID 
                                                    left join
                                                        TAGENCEBANCAIRE a6_2 
                                                            on a6_0.ID=a6_2.ID 
                                                    left join
                                                        TPERSONNEPHYSIQUE a6_3 
                                                            on a6_0.ID=a6_3.ID 
                                                    left join
                                                        TPARTENAIRE a6_4 
                                                            on a6_0.ID=a6_4.ID 
                                                    left join
                                                        TPERSONNEMORALE a6_5 
                                                            on a6_0.ID=a6_5.ID) 
                                                                on a6_0.ID=d4_0.ACTEURASSOCIE_ID 
                                                        left join
                                                            TMODELEOBJETMETIER m12_0 
                                                                on m12_0.ID=a6_0.MODELEACTEUR_ID 
                                                        left join
                                                            (TACTEUR o4_0 
                                                        left join
                                                            TACTEURINTERNE o4_1 
                                                                on o4_0.ID=o4_1.ID 
                                                        left join
                                                            TAGENCEBANCAIRE o4_2 
                                                                on o4_0.ID=o4_2.ID 
                                                        left join
                                                            TPERSONNEPHYSIQUE o4_3 
                                                                on o4_0.ID=o4_3.ID 
                                                        left join
                                                            TPARTENAIRE o4_4 
                                                                on o4_0.ID=o4_4.ID 
                                                        left join
                                                            TPERSONNEMORALE o4_5 
                                                                on o4_0.ID=o4_5.ID) 
                                                                    on o4_0.ID=a6_3.OBJETMAITRE_ID 
                                                            left join
                                                                TMODELEOBJETMETIER m13_0 
                                                                    on m13_0.ID=o4_0.MODELEACTEUR_ID 
                                                            left join
                                                                TCODEPOSTAL c6_0 
                                                                    on c6_0.ID=d4_0.CP_ID 
                                                            left join
                                                                TMODELEOBJETMETIER m14_0 
                                                                    on m14_0.ID=s5_0.MODELEACTEUR_ID 
                                                            left join
                                                                TCONTRAT c7_0 
                                                                    on c7_0.ID=c1_1.CONTRATDEREGROUPEMENT_ID 
                                                            left join
                                                                (TACTEUR c8_0 
                                                            left join
                                                                TPERSONNEMORALE c8_1 
                                                                    on c8_0.ID=c8_1.ID) 
                                                                        on c8_0.ID=c7_0.CENTRERATTACHEMENTIEG_ID 
                                                                left join
                                                                    ( select
                                                                        ID, ACTEURCREATION, ACTEURMODIFICATION, ACTEURSUPPRESSION, AGENCE, DATECREATION, DATEMODIFICATION, DATESUPPRESSION, ETATOBJET, CODEPOSTAL, COMMUNE, LIGNE2LOCAL, LIGNE3BATIMENT, LIGNE5COMPLEMENT, NIVEAUDECONTROLE, NUMERO, TYPEADRESSEPOSTALE, VOIE, DONNEEGEOGRAPHIQUE_ID, ESPACEDELIVRAISON_ID, 1 as clazz_ 
                                                                    from
                                                                        TADRESSEPOSTALE ) a7_0 
                                                                        on a7_0.ID=c8_0.ADRESSEPOSTALE_ID 
                                                                left join
                                                                    TDONNEEGEOGRAPHIQUE d5_0 
                                                                        on d5_0.ID=a7_0.DONNEEGEOGRAPHIQUE_ID 
                                                                left join
                                                                    (TACTEUR a8_0 
                                                                left join
                                                                    TACTEURINTERNE a8_1 
                                                                        on a8_0.ID=a8_1.ID 
                                                                left join
                                                                    TAGENCEBANCAIRE a8_2 
                                                                        on a8_0.ID=a8_2.ID 
                                                                left join
                                                                    TPERSONNEPHYSIQUE a8_3 
                                                                        on a8_0.ID=a8_3.ID 
                                                                left join
                                                                    TPARTENAIRE a8_4 
                                                                        on a8_0.ID=a8_4.ID 

....
[DELETE FOR SIZE]                                                                                                                                  
where
                                                                                                                                                                                                c1_0.SOURCE=?

In using @Fetch(FetchMode.SELECT) I managed to extract the queries !
It’s good for me :slight_smile: Sorry.

You might be running into a situation which is described in the migration guide: hibernate-orm/migration-guide.adoc at 6.0 · hibernate/hibernate-orm · GitHub

1 Like