这个问题有点2.前几天我用hibernate生成的DAO,对对象进行save,find的操作都可以实现.有个表是这样的Song(主键:songid,自动增长).在配置hibernate的时候也是设置的native.然后今天用hibernate生成的DAO,可以进行find操作,但是save怎么也save不进去.但是我发现save没成功,但是主键的值已经用掉了(比如最后一条记录的主键值是19,save一次,没有成功,但是它把20给占了,用sql 查询编辑器 insert 插入数据的主键就是21了).
用Session进行保存就可以保存进去.我就纳闷了,为什么DAO会保存不进去了?是什么原因.

解决方案 »

  1.   

    粘 出来hbm.xml看看....还有用的啥数据库啊...
      

  2.   


    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.geek.music.Song" table="Song" schema="dbo" catalog="Music">
            <id name="songId" type="java.lang.Integer">
                <column name="songID" />
                <generator class="native" />
            </id>
            <property name="songName" type="java.lang.String">
                <column name="songName" not-null="true" />
            </property>
            <property name="songSinger" type="java.lang.String">
                <column name="songSinger" not-null="true" />
            </property>
            <property name="songUrl" type="java.lang.String">
                <column name="songUrl" not-null="true" />
            </property>
        </class>
    </hibernate-mapping>
    用的是sqlserver2008...之间重装过一次系统..
      

  3.   

    在调用save方法的时候打印下要存的数据,就知道为什么了。
      

  4.   


    自动生成的DAO方法不需要提交事务!在5天之前我试过!