1

休止状態でネイティブ クエリを使用していますが、ID のリストが返されます。このリストを整数リストに変換したい。しかし、それは機能しておらず、例外が表示されています。

public List<Integer> fethcSurvayIdOnCount(){
            HibernateCallback action = new HibernateCallback() {
            public Object doInHibernate(Session session)
            throws HibernateException, SQLException {
        String hq = "select id from tb_abc where age='10'" ;

        SQLQuery query = (SQLQuery) session
                .createSQLQuery(hq)
                .setResultTransformer(
                        Transformers
                                .aliasToBean(Integer.class));

        return query.list();
    }
    };
    return (List<Integer>) getHibernateTemplate()
        .execute(action);
    }   

ここに例外があります

org.springframework.orm.hibernate3.HibernateSystemException: Could not find setter for id on class java.lang.Integer; nested exception is org.hibernate.PropertyNotFoundException: Could not find setter for id on class java.lang.Integer
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:676)
    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:339) 
4

3 に答える 3

0

問題はあなたから来ていますTransfomer。リストメソッドから取得する特定のフィールドを要求しているため、List<Object[]>トランスフォーマーはそれらのオブジェクトを整数にマップしようとしますが、プロパティのエイリアス (この場合は「id」) に基づいて、指定したクラスがそうでないBean(したがって、メソッドの名前aliasToBeanIntegerです。

適切なタイプを取得するために、クエリによって返されたリストを反復処理する必要がある場合があります (これは、とにかく内部でトランスフォーマーが行うことです)。

于 2013-03-22T15:05:30.703 に答える