关于hibernate 的一个小问题
<hibernate-mapping>
     <class name="com.wy.dao.Shopmember" table="shopmember" schema="dbo" catalog="shopping">
         <id name="name" type="java.lang.String">
             <column name="name" length="50" />
             <generator class="native" />
         </id>
         <property name="id" type="java.lang.Integer">
             <column name="id" not-null="true" />
         </property>
         <property name="password" type="java.lang.String">
             <column name="password" length="50" />
         </property>
。。。。。。
上面是我一个映射文件的部分,name是主键,id不可以为空,但我在数据库中设置的为自动增加的,因此在插入数据的时候就不用set id了,可是却出现了无法插入数据的错误提示,我自己知道是因为id不可为空,但如何实现添加的时候自动增加啊??
------解决方案--------------------那就将主键设置成指派的方式:
<id name="name" type="java.lang.String">  
           <column name="name" length="50" />  
           <generator class="assigned" />  
</id>
不过怎样你要自己在程序中给name赋值,并且保证唯一。
------解决方案--------------------楼主何不换一种方式去做呢!~!
你将id设为主键,并且是自动增长的,
然后把name设置成唯一的,也许这才是比较好的做法!~!
这样就很容易的解决问题了啊!~!
------解决方案--------------------ID自动增加.在<class name="id" ><generator class="sequence"></generator ></class>这是oracle的,
你的如果是mysql就是在generator标签中class="native"
这样就能,好想是这样的!!
------解决方案--------------------<generator class="sequence">
------解决方案--------------------<id name="name" type="java.lang.String">  
           <column name="name" length="50" />  
           <generator class="increment" />  
       </id>  
只有是设置主键自动增长的
------解决方案--------------------        <id name="name" type="java.lang.String">  
           <column name="name" length="50" />  
           <generator class="native" />  
       </id>  
老大  别冲动。。。  String   你怎么增长???  除非你是这样  在插入一次之前
先查询上一个的值  然后再生成要插入的id 才有可能成功插入
不过中间假如有删除你就惨了。。。
比如说 1500后面本来有1501的  但是你把他删了
结果  你查询了1500 然后通过id生成器又生成了1501。。。。
------解决方案--------------------<hibernate-mapping>  
   <class name="com.wy.dao.Shopmember" table="shopmember" schema="dbo" catalog="shopping">  
       <id name="id" type="java.lang.Integer">  
           <column name="id" length="50" />  
           <generator class="sequence">
               <param name="sequence">SEQ_XXXXX</param>
           </generator>    
       </id>  
       <property name="name" type="java.lang.String">  
           <column name="name" not-null="true" />  
       </property>  
       <property name="password" type="java.lang.String">  
           <column name="password" length="50" />