本帖最后由 zuomingyu2 于 2009-12-05 22:32:19 编辑

解决方案 »

  1.   

    是不是id重复了 insert into 不了
      

  2.   

    看了半天,觉得唯一的一个疑点是:<list name="singers" table="song_singer" cascade="save-update">
                <key column="songID"></key>
                <index column="song_singer_id"></index> 
                <one-to-many class="Singer" />
    </list>        上面的红色部分应去掉。
      

  3.   

        <hibernate-mapping package="com.vo">
        <class name="Song" table="Song">
            <id name="songID" column="songID">
                <generator class="native"></generator>
            </id>
            <!-- 中间省了 -->                
            <!-- 关系映射 -->
            
            <list name="singers" table="song_singer" cascade="save-update">
                <key column="songID"></key>
                <index column="song_singer_id"></index> 
                <one-to-many class="Singer" />
            </list>        
            
            <many-to-one name="album"  class="Album" column="albumID" cascade="save-update" reverse="true"></many-to-one>
            
        </class>    
    </hibernate-mapping>
         reverse="true" 让多的一方放弃维护关系,lz可以试试         
      

  4.   

    <hibernate-mapping package="com.vo">
        <class name="Song" table="Song">
            <id name="songID" column="songID">
                <generator class="native"></generator>
            </id>
            <!-- 中间省了 -->                
            <!-- 关系映射 -->
            
            <list name="singers" table="song_singer" cascade="save-update">
                <key column="songID"></key>
                <index column="song_singer_id"></index> 
                <one-to-many class="Singer" />
            </list>        
            
            <many-to-one name="album"  class="Album" column="albumID" cascade="save-update" reverse="true"></many-to-one>
            
        </class>    
    </hibernate-mapping>
    reverse="true" 让多的一方放弃维护关系,lz可以试试
      

  5.   

    楼主,你的Album 和 Song 是个多对一,而Song 又和Singer还是个多对一,那你怎么不直接用Album封装Singer呢?那样看起来多清晰呀?你的配置文件我实在看不出来有什么问题,不过你的级联关系我没看懂,你再仔细检查下吧!
    你既然对Album直接save()了,但Song和Singer没有持久化,那你的级联关系可一定要配好。
      

  6.   

    Album album = new Album();
                List<Song>songs = new ArrayList<Song>();
                            
                songs.add(song);
                album.setSongs(songs);
                
                session.save(album);
    你的主表是是song才对,这里不应该保存album,应该是List<Song> albums  = new ArrayList< album  >();
                            
               增加多个album到albums  中
    song。set Album(albums  );
    session.save(song);