0

DBから結果一覧を取得する関数です。

public List<util> deep(){
    Query query = getEntityManager().createNativeQuery("SELECT state,max(pop2010) from uscensuspopulationdata where state <> 0 ");
    List<util> l=   query.getResultList();  
    return l;
}

クラスユーティリティ:

public class  util{
    int state;
    int pop2010;

    public util(int state, int pop2010) {
        this.state = state;
        this.pop2010 = pop2010;
    }

    @Override
    public String toString() {
        return "util{" + "state=" + state + ", pop2010=" + pop2010 + '}';
    }
}

このような値を抽出しようとすると、ClassCastException が発生します。

List<util> l =  handle.deep();
for (util u : l) {
    out.print(u); 
}
4

1 に答える 1

0

オブジェクトのリストがutil必要な場合は、次のクエリを使用できるはずです。

Query query = getEntityManager().createNativeQuery("SELECT new util(state,max(pop2010)) from uscensuspopulationdata where state <> 0 ");
List<util> l = query.getResultList();     

util のコンストラクターを呼び出す場所。このユース ケースは、HQL ドキュメントでここに指定されています。

uscensuspopulationdataがマップされたエンティティである場合も、を使用するべきではありませんが、使用することNativeQueryはできますgetEntityManager().createQuery(...)

最後に、クラスの最初の文字を大文字にすることは、Java で適切なスタイルと見なされます。

于 2012-10-10T23:00:10.747 に答える