getHibernateTemplate().find查空数据库,返回不为空,诡异啊

发布于 2022-09-02 11:46:10 字数 927 浏览 8 评论 0

public boolean registryCheckName(String name) {


        return getHibernateTemplate().find("from User where username=?", name) == null;

    }

就这么一个方法,查询出来都是不!=null ,为false!!数据库可是一点东西都没有啊

name是有值的,不用怀疑其为null。

所以说,这到底是怎么回事呢??

===================================

我试着在数据库上写上一条内容,然后再查,还是不等于空,但是,这是验证是否相同啊,输入名字与数据库记录明显不同,但还是提示!=null。肯定是这句子的用法出问题...

=============================

搜索看了一下,人家都是“怎么查都是null或者空指针的情况“。

用法,就这样啊:

、find(String queryString , Object value);

 示例:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test");

 或模糊查询:this.getHibernateTemplate().find("from bean.User u where u.name like ?", "%test%");

 返回name属性值为test的对象(模糊查询,返回name属性值包含test的对象)

=========================================

我试着输出getHibernateTemplate().find("from User where username=?", name),的确有东西存在....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

澉约 2022-09-09 11:46:10

getHibernateTemplate().find()返回的是一个List, 一个new过的对象,
所以,!=null, 改用isEmpty:

return getHibernateTemplate().find("from User where username=?", name).isEmpty();
最美不过初阳 2022-09-09 11:46:10

换个解决了:但对这个方法还是想弄清楚......好像第一位说得比较好!!!

我换的方法如下:代码多了去

@Override
    public boolean registryCheckName(final String name) {


        User u = getHibernateTemplate().execute(new HibernateCallback<User>() {
            @Override
            public User doInHibernate(Session session) throws HibernateException {

                String hql = "from User where username=:username";
                User uu= (User) session.createQuery(hql).setString("username", name).uniqueResult();

                return uu;
            }
        });

        return u== null;

    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文