2

@Create メソッド中に次の hibernate クエリを呼び出すステートフル バッキング Bean があります (以下にクエリを示します)。

@Override
@SuppressWarnings("unchecked")
public List<Session> getUserSessions(User user, Date startDate, Date endDate){
    String s = "select distinct s from Session s";
    s += " where s.user = :user and s.date >= :startDate and s.date <= :endDate order by s.date desc";
    Query query = this.getEntityManager().createQuery(s);
    System.out.println("Making Query");
    query.setParameter("user", user);
    query.setParameter("startDate", startDate);
    query.setParameter("endDate", endDate);
    return query.getResultList();
}

しかし、SQL ログを有効にすると、クエリが 2 回実行されていることがわかります。以下のログを参照してください

16:49:04,563 DEBUG [actions.sessions.SessionActionsBean] Searching for sessions from:     Wed Feb 01 00:00:00 GMT 2012 to: Wed Feb 29 23:59:59 GMT 2012
16:49:04,564 INFO  [STDOUT] Making Query
16:49:04,564 INFO  [STDOUT] Making Query
16:49:04,565 INFO  [STDOUT] Hibernate: select distinct session0_.session_id as session1_101_, session0_.av_pace as av2_101_, session0_.calories as calories101_, session0_.date_created as date4_101_, session0_.date as date5_101_, session0_.distance as distance101_
16:49:04,565 INFO  [STDOUT] Hibernate: select distinct session0_.session_id as session1_101_, session0_.av_pace as av2_101_, session0_.calories as calories101_, session0_.date_created as date4_101_, session0_.date_swam as date5_101_, session0_.distance as distance101_

JSF から呼び出されたバッキング Bean は 1 回しか実行されていませんが、DAO クエリ Bean は getUserSessions() を 2 回呼び出しているようです。

これには理由がありますか、それともログの問題ですか?

ありがとう

4

1 に答える 1

0

2 つのクエリはまったく同じではありません。最初のSELECT句は column を要求しsession0_.date、2 番目の句は を選択しsession0_.date_swamます。

他に何か起こっていないと確信していますか?

于 2012-08-08T15:49:02.107 に答える