求助大佬!我的hibernate是假的吗?

以下是我导入的支持hibernate的炸包,是从www.hibernate.org官网下的:

配置好文件之后,我进行了最基本的session对数据库的操作,insert和update方法都可以正常地执行。然而当我测试delete方法的时候,控制台开始报“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id=2' at line 1”的错误,意思是mysql提示说我的sql语句有问题对吧,然后我去查看了输出在控制台的hibernate执行的语句,我惊呆了,我把我写的代码和控制台输出贴一下:

    /**
     * 测试session会话的update,delete,insert方法
     */
    @Test
    public void testSession(){
        Configuration configuration = new Configuration();
        configuration.configure();
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //获得全新的session会话
        Session session = sessionFactory.openSession();
        //开启事务
        Transaction transaction = session.beginTransaction();
        User user = (User)session.load(User.class,2);
        session.delete(user);
        System.out.println(user);
        //提交事务
        transaction.commit();
        //手动关闭session会话
        session.close();
        sessionFactory.close();
        return;
    }

控制台是这么写的:

 我开始也没有想到Hibernate输出的sql语句会有问题,在网上找了半天,然后我看到这个Hibernate输出的sql之后我惊呆了。网上我没有看到有人发过类似的问题,我也不知道为什么会这样,session其他的方法都可以正常执行应该说明hibernate的配置没有什么问题吧。不知道有大佬知道这是怎么回事吗?


另一个问题其实也类似,就是调用hibernate提供的方法正常执行却没有实现约定的功能,就很崩溃。我用Query进行limit的查询,这应该是一个很基本的操作,代码如下:

    /**
     * 测试Query查询
     */
    @Test
    public void testQuery(){
        //获取用户核心配置对象
        Configuration configuration = new Configuration();
        //加载核心配置文件,默认加载hibernate.cfg.xml
        configuration.configure();
        //构建SessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //生产Session会话对象
        Session session = sessionFactory.openSession();
        //获取Query查询对象,Hibernate通过类来映射表
        Query query = session.createQuery("from User order by id desc ");

        //分页查询limit ?,?
        query.setFirstResult(0);
        query.setMaxResults(3);//从0数据开始一次3个

        //返回多行数据
        /**
         * list()多行
         * uniqueResult()单行
         */
        List list = query.list();
        for(Object o:list){
            System.out.println(o);
        }

        return;
    }
}

但是无论我怎么修改serFirstResult()和setMaxResults()的参数,它始终不能正常的执行,要不就是把表内数据全部放进List返回要不就是我也看不懂什么逻辑地返回了几条记录。网上有人说Query查询的结果是无序的所以应该用order by限制一下,我加了还是没有用。

希望有大佬指点迷津,告诉我一下这个问题应该怎么解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值