11

これは私のDAOにあります:

public List<Weather> getCurrentWeather() {  
    return sessionFactory.getCurrentSession().createQuery("from Weather").list();
}

これにより、Weatherテーブルからすべての要素が取得されます。しかし、私がこのようなことをしたいとしましょう(私はテーブルWeatherから1つの要素だけが欲しいです):

public Weather getCurrentWeather() {    
    return sessionFactory.getCurrentSession().createQuery("from Weather where id = 1").list(); // here should be something else than list()
}

最後にあるべきではないことはわかっています list() が、オブジェクトを1つだけ取得するには、そこに何を書き込む必要がありますか?

4

3 に答える 3

12

ID がある場合は、get を使用します。

public Weather getCurrentWeather() {    
    return sessionFactory.getCurrentSession().get(Weather.class, 1); 
}

クエリを実行する必要がある場合は、結果セットの先頭を取得するか、クエリで使用できuniqueResult()ます。

于 2011-09-16T15:13:12.720 に答える
10

リストの取得に何か問題がありますか? :)休止状態が1つしかないことを知っていても、それを想定することはできません。とにかくリストを取得する方が安全です!

public Weather getCurrentWeather() {    
    List<Weather> list = sessionFactory.getCurrentSession().createQuery("from Weather where id = 1").list(); // here should be something else than list()
    return (list.isEmpty() ? null : list.get(0));
}
于 2011-09-16T15:20:18.333 に答える