java - SQLGrammarException: could not initialize a collection
巴扎黑
巴扎黑 2017-04-17 13:10:45
[Java讨论组]

昨天在学Hibernate的多对多关联映射,遇到一个错误:org.hibernate.exception.SQLGrammarException: could not initialize a collection: [com.duqi.ORM.Items.orders#8]

(1)参考网上类似的说法:
http://blog.csdn.net/derpvailzhangfan/article/details/1644287;但是他这个是SQL Server的。
(2)背景和相关配置如下:
商品表的映射文件中的关联配置:



    
    
    
    

订单表中的:


    
        
        
        
        
    

出问题的语句是在DAO类中:

    public Items loadItems(Integer id){
    session = HibernateSessionFactory.getSession();
    Items item = null;
    try {
        transaction = session.beginTransaction();
        item = (Items) session.get(Items.class, id);
                    //这条语句的意图是使得item.getOrders()返回的对象可以脱离Session使用,这个理解没问题吧?
        Hibernate.initialize(item.getOrders()); //这条语句出错
        transaction.commit();
    } catch (Exception e) {
        // TODO: handle exception
        transaction.rollback();
        System.out.println("loadItems异常");
        e.printStackTrace();
    } finally{
        session.close();
    }
    return item;
}

我的测试函数是:

    public static void main(String[] args) {
    ManyManyDAO dao = new ManyManyDAO();
    Items item = new Items();
    item.setItemname("商品测试");
    item.setItemno("007");
    dao.addItems(item);
    Items item2 = new Items();
    item2.setItemname("商品测试2");
    item2.setItemno("008");
    dao.addItems(item2);
    Items item3 = new Items();
    item3.setItemname("商品测试3");
    item3.setItemno("009");
    dao.addItems(item3);    
    Set items = new HashSet();
    items.add(dao.loadItems(new Integer(8)));
    items.add(dao.loadItems(new Integer(9)));
    Orders order = new Orders();
    order.setItems(items);
    order.setMoney(100.8);
    order.setOrderno("A0009");
}

另外,我的数据库设计如下:
(1)items表

(2)orders表

(3)关联表selecteditems

我的尝试:已经试过将映射文件里的lazy属性改成false,这样就不需要二次查询,但是依然有这个错误。

巴扎黑
巴扎黑

全部回复(1)
迷茫

问题已经解决,是数据库和映射文件没有对上,数据库中的表orders的ID字段多了一个空格。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号