order  是sql的关键字,你要小心哦!

解决方案 »

  1.   

    哦,谢谢 java2000-net 兄,我改下看看。
      

  2.   

    把order表名改了之后还是一样的错误。
    我记得之前没用到hibernate的多对一关系的时候也是用order作为表名然后save(order)能够成功。
    这次就奇怪了,不知道是怎么回事?
      

  3.   

    你这是多的1 保存?
    多对一保存 主健类有个Set集合 专门放外键类的
    你有吗?
    插入数据库的话 外键类 放入主键类Set集合 
    直接保存主键类就行了
    id问题实在不行用uuid生成方式吧
      

  4.   

    .hbm.xml加inverse元素配置试试。
      

  5.   


    forhd兄,谢谢你。从错误提示看 'order (orderNumber, customer_id, id) values ('Tom_Order001', 6, default)‘
    外键的id我觉得是可以插进去的,不用set集合,问题是它报错order表的id我没有赋值,但是order.hbm.xml里面已经设置了id产生的方式<generator class="identity"/>
      

  6.   

    id identity 改成  increment   
      

  7.   

    你是不是配反了呀?呵呵!customer对应order是一对多的关系。
    多对一
    <many-to-one 
    name="order" 
    column="customer_id" 
    class="Order" 
    not-null="true" 
    /> 
    一对多
    <set name="customer" cascade="save-update" table="Customer" inverse="false">
    <key column="id" />
    <many-to-many class="Customer" column="customer_id" />
    </set>
      

  8.   

    你是不是配反了呀?呵呵!customer对应order是一对多的关系。
    多对一
    <many-to-one 
    name="order" 
    column="customer_id" 
    class="Order" 
    not-null="true" 
    /> 
    一对多
    <set name="customer" cascade="save-update" table="Customer" inverse="false">
    <key column="id" />
    <many-to-many class="Customer" column="customer_id" />
    </set>
      

  9.   

    感谢yojiwei 兄,order和customer是多对一的关系,在order.hbm.xml中的配置如下:<many-to-one 
    name="customer" 
    column="customer_id" 
    class="Customer" 
    not-null="true" 
    /> 
    在hibernate的使用手册中它举了一个例子,product和orderItem的关系是多对一的关系,那么关于orderItem的映射关系应该是<many-to-one name="product" class="Product" column="PRODUCT_ID"/>。
    所以我上面的关系配置应该是正确的。谢谢你的关注。
      

  10.   

    SystemKing兄,我之前是increment的,也有这个问题,所以我改成由数据库来自动产生的identity,同样的错误,感谢你的关注和恢复。
      

  11.   

    我想你还是 show_sql = true 打印出那个完整的SQL看看吧!必要时手工执行一下。
      

  12.   

    你怎么将Session关闭了两次啊?