2017-02-01 7 views
0

Mysqlからキャッシュサーバーにデータを同期するためにサーバーの起動時に実行される休止状態のクエリがあります。Hibernateを頻繁にフェッチするのに非常に時間がかかります

エンティティには、常に必要な子として別のエンティティがあるため、Fetch = ALLが使用されます。

Hibernateを使用してクエリを実行すると、およそ3〜4分かかります(約600レコードの小さなテーブル)。ネイティブSQLクエリを実行する場合、0.17秒かかります。私は何が欠けていますか?ここで

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
@JoinColumn(name = "hotLeadConfigId") 
private Set<HotLeadSpecialPagesEntity> specialPages = new HashSet<HotLeadSpecialPagesEntity>(); 

私が作っていますクエリです: Query time on MySQL Phpmyadmin

+0

3〜4分で休止状態の初期化時間を含めていますか? – RamPrakash

+1

デバッガにロガーを設定して、休止状態で実行されたクエリを投稿してください。 –

+0

にはさらに熱心な結合があります。休止状態initを含まない3-4分です。いくつかのログを送信します – Tamir

答えて

0

@Fetch(FetchMode.JOIN)または@Fetch(FetchMode.SUBSELECT)

でそれに注釈を付けるようにしてください説明のためThe @Fetch annotation mappingを参照してください。

関連する問題