3

休止状態で使用findById()findAll()、Daoレイヤーで使用しました。findById()メソッドは期待どおりに機能しますが、findAll()常に空の結果セットを返します。理由はまだわかりません。この問題を解決するのに役立つ人がいます。

注: 例外はなく、空のリストのみを返します

これが私のコードです

Find All メソッド

 public List<T> findAll() {
        Query query = getSession().createQuery("SELECT obj FROM " + persistentClass.getSimpleName() + " obj");
        return query.list()
    }

Id メソッドで検索

public T findById(Long id) {
        T result = (T) getSession().get(getPersistentClass(), id);
        return result;
    }

getSession メソッド

protected Session getSession() {
        if (session == null)
            session = tenantBasedSessionFactory.getTenantBasedSession("tenantId");
//            throw new IllegalStateException("Session has not been set on DAO before usage");
        return session;
    }

よろしくお願いします

4

1 に答える 1

1

エンティティ名が正確でデータが存在すると仮定すると、問題は見られませんが、短い表記法はもう試しましたか?

Query query = getSession().createQuery("FROM " + persistentClass.getSimpleName());

返されるエンティティが 1 つだけの場合はエイリアスは必要ないため、単純な「すべてを取得」クエリを読んだ方がよいと思います。

于 2014-08-14T10:18:47.523 に答える