1

2 つのドロップダウン リストがあり、それぞれに異なるテーブルのデータが入力されます。2 つの異なる DAO クラスとリスト メソッドを作成しましたが、2 番目のリストが null になります。

公開クラス GenderDAO {

private ArrayList<Gender> genders;
static final Logger logger = Logger.getLogger(GenderDAO.class);

@SuppressWarnings("unchecked")
public ArrayList<Gender> listGenders() {
    Session session = HibernateUtil.getSessionFactory().openSession();
    Transaction transaction = null;
    try {
        transaction = session.beginTransaction();
        genders = (ArrayList<Gender>) session.createQuery("from Gender").list();
        transaction.commit();
    } catch (HibernateException e) {
        logger.debug("In the GenderDAO HibernateException");
        transaction.rollback();
    } finally {
        logger.debug("In the GenderDAO finally block");
        session.close();
    }
    return genders;
}

パブリッククラスStateDAO {

private ArrayList<State> states;
static final Logger logger = Logger.getLogger(StateDAO.class);

@SuppressWarnings ("unchecked")
public ArrayList<State> listStates() {
    Session session = HibernateUtil.getSessionFactory().openSession();
    Transaction transaction = null;
    try {
        transaction = session.beginTransaction();
        states = (ArrayList<State>) session.createQuery("from State").list();
        transaction.commit();
    } catch (HibernateException e) {
        logger.debug("In the StateDAO HibernateException");
        transaction.rollback();
    } finally {
        logger.debug("In the StateDAO finally block");
        session.close();
    }
    return states;
}

}

次のエラーが表示されます。

タグ 'select'、フィールド 'list'、名前 'state': 要求されたリスト キー 'states' をコレクション/配列/マップ/列挙型/反復子型として解決できませんでした。例: people または people.{name}

StateDAO でクエリを実行する前に次を追加すると、エラーはなくなりますが、リストは空です。

状態 = 新しい ArrayList();

DAO メソッドを呼び出すコードは次のとおりです。

    GenderDAO genderDAO = new GenderDAO();
    genders = genderDAO.listGenders();

    StateDAO stateDAO = new StateDAO();
    states = stateDAO.listStates();

誰かが欠けているものを提案できますか?

4

0 に答える 0