クエリのいずれかで重複データを取得し、数は@Fetch(FetchMode.SUBSELECT)と繰り返しマルチデータ・ソリューションの数である多くの関係を休止

データテーブルを初めて目

2つだけのセクションのテーブルデータ

プレート1は、コラム下の子をお勧めされていません

14のサブセクションで以下のセクション2

問い合わせへの一方の端には、調査結果は16を持っています

それは、プレート1+ 2+フォーラムのセクション2と彼の14個のサブセットが表示されている、であり、これは明らかに間違っています

 

プレートの設定オブジェクト

    @OneToMany(カスケードにおけるCascadeType.ALL = {}、= FetchType.EAGERフェッチ)
    @JoinColumn(名= "セクションID")// 関連についてColumnMoDelの外部キー

 私は、発生する緊急の負荷がそこにあるものを推測します

チャールズ文が必要です

休止状態: 
     選択
        this_.id としてid1_17_1_、
        ... から
        this_ t_section 
     外側に 参加
        t_column columnmode2_ 
             this_.id = columnmode2_.sectionId 
休止状態:
    選択
        columnmode0_.id として、id1_7_
       ... から
        t_columnのcolumnmode0_ 
    ここ
        columnmode0_.sectionid = ' 1 '

 

 

このポリシーは削除するように設定されています

@OneToMany(カスケードにおけるCascadeType.ALL = {} 
    @JoinColumn(名 = "セクションID")// 関連についてColumnMoDelの外部キー

 

または遅延読み込みを使用して

@OneToMany(カスケードにおけるCascadeType.ALL = {}、= FETCH FetchType.LAZYに)
    @JoinColumn(名 = "セクションID")// 関連についてColumnMoDelの外部キー

 

あなたは、重複したデータセットのこの問題を解決することができます

しかし、これはマルチパーティのコレクションを取得していません

このように見える問題を解決していません

@Fetchを使用してこの問題を解決することができ、お問い合わせ後

@OneToMany(カスケード= {} CascadeType.ALLで)
    @JoinColumn(名 = "セクションID")// columnModel関連付けるための外部キー 
    @Fetch(FetchMode.SUBSELECT)

 発行したコンソールでクエリが2であります

休止状態: 
     選択
        this_.id としてid1_17_0_、
        ..... から
        t_section this_ 
休止状態:
    選択
        columnmode0_.id としてid1_7_、
       ... から
        t_columnのcolumnmode0_ 
    
        columnmode0_.sectionid = ' 1 '

場合は、ノートと、それを変更

 @OneToManyカスケード = {CascadeTypeの。ALL }、FETCH  = FetchType.EAGER)
     @JoinColumn(名= "セクションID")// 外部キーColumnMoDelを関連付けるため、ある
     @Fetch(FetchMode.SUBSELECT)を

声明では、再び変更されます 

休止状態: 
     選択
        this_.id としてid1_17_0_、
       ... から
        t_section this_ 
休止状態:
    選択
        columnmode0_.sectionIdのように、sectionI7_17_1_
        ... から
        t_columnのcolumnmode0_ 
    
        columnmode0_.sectionId では選択
                this_.id から
                t_sectionのthis_ 
            

 クエリの効率として、現在に対処する時間はありませんし、その後時間アナライザのテストを持っているが、文から解析まで、@速く怠惰な負荷と同様にロードされた急性および確かにないと(FetchMode.SUBSELECT)を取得します

おすすめ

転載: www.cnblogs.com/jnhs/p/11404572.html