<id name="name" type="java.lang.String">这个是表的主件,你要认真的看书上说的,作为主件能是String的吗?,并且作为主件,书上不是说主件不要跟业务有关联吗?你的name就跟业务有关联了,我不知道说对了没有,你浪你的id 作为主件就可以的!!!
解决方案 »
- D盘下的文件
- prototype ajax怎么返回List
- Resin2.1.13+JDK1.4+MySQL5.0.27下通过Resin连接池访问数据源出现javax.naming.NameNotFoundException
- jxl生成的CSV文件如何用文本编辑器打开看????
- webwork的中怎么防止绕开登陆(或叫强制登陆)????
- 关于Struts定制页面的显示问题
- 急!急!急!EJB多人协做开发
- Weblogic 8.1配置ejb时的错误?????
- 求人事管理文档
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Y
- 求助:Hibernate 分页排序问题
- 开发转测试工程师
<column name="name" length="50" />
<generator class="native" />
</id>
String 怎么增长?
mysql用int autoincrement
type="java.lang.Integer",这样可以实现数据库本地自增长
<generator class="identity" />
试试!
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'shopmember' 中的标识列插入显式值。
com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)
<hibernate-mapping>
<class name="com.wy.dao.Shopmember" table="shopmember" schema="dbo" catalog="shopping" dynamic-insert="true" dynamic-update="true">
<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>
native方式的主键只能是int类型不要把String类型的name作为主键
把自动增量去掉,然后添加数据改用存储过程,每次将最大的id+1再存储。
<id name="name" type="java.lang.String">
<column name="name" length="50" />
<generator class="assigned" />
</id>
不过怎样你要自己在程序中给name赋值,并且保证唯一。
你将id设为主键,并且是自动增长的,
然后把name设置成唯一的,也许这才是比较好的做法!~!
这样就很容易的解决问题了啊!~!
你的如果是mysql就是在generator标签中class="native"
这样就能,好想是这样的!!
<column name="name" length="50" />
<generator class="increment" />
</id>
只有是设置主键自动增长的
<column name="name" length="50" />
<generator class="native" />
</id> 老大 别冲动 String 你怎么增长??? 除非你是这样 在插入一次之前先查询上一个的值 然后再生成要插入的id 才有可能成功插入不过中间假如有删除你就惨了
比如说 1500后面本来有1501的 但是你把他删了结果 你查询了1500 然后通过id生成器又生成了1501。
<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" />
</property>这样改 就行了 把id设为主键