【问题标题】:findAll() method is giving the empty result set in HibernatefindAll() 方法在 Hibernate 中给出空结果集
【发布时间】:2012-09-24 10:30:06
【问题描述】:

在hibernate中,我在Dao层使用了findById()findAll()findById()方法按我的预期工作,但是findAll()总是返回空结果集,我仍然无法弄清楚原因,任何人都可以帮我解决这个问题,

注意:没有异常,只返回空列表

这是我的代码

查找所有方法

 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;
    }

提前谢谢你 干杯

【问题讨论】:

  • SQL 日志说明了什么。启用 SQL 日志记录并检查 SQL 查询是否正确。
  • 谢谢回复,这里是sql查询“SELECT obj FROM Employee obj”,我认为是正确的,
  • 我知道这是个愚蠢的问题,但是您在 Employee 表中有任何数据吗?我的意思是提交的数据?
  • 是的,我不知道原因,使用 findById() 方法可以正常工作
  • 谢谢,我找到了解决办法,错误就在我身边,谢谢你的帮助

标签: hibernate jpa-2.0


【解决方案1】:

假设实体名称准确且数据存在,我看不出有任何问题,但您是否已经尝试过简写法?

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

我发现阅读简单的“获取所有”查询更好,因为如果只返回一个实体,则不需要任何别名。

【讨论】:

    猜你喜欢
    • 2018-09-11
    • 1970-01-01
    • 2021-06-07
    • 2017-08-25
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多