native只支持数据库自带的主键管理模式,一般是自增长。学号到底是什么类型的?如果是String 型的话 type="java.lang.Integer"在映射就有问题。
另外,
要hibernate管理你的主键的话就不能选择那些手工输入的字段(即与业务相关的字段,如学号)作为主键,而需要建立一个和业务无关的字段。
你可以在类中(可能是Student)新加一个Integer字段id,然后
<id name="stuId" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
在程序中不同写stu.setId(1).因为在stu.save()时会自动帮你设置一个id值赋予stu。
也就是说在stu.save()之前,stu.getId()结果是null;而stu.save()之后stu.getId()结果是某一个Integer的数值
另外,
要hibernate管理你的主键的话就不能选择那些手工输入的字段(即与业务相关的字段,如学号)作为主键,而需要建立一个和业务无关的字段。
你可以在类中(可能是Student)新加一个Integer字段id,然后
<id name="stuId" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
在程序中不同写stu.setId(1).因为在stu.save()时会自动帮你设置一个id值赋予stu。
也就是说在stu.save()之前,stu.getId()结果是null;而stu.save()之后stu.getId()结果是某一个Integer的数值
解决方案 »
- 求助,帮看看Java处理图片的问题
- java 调用shell的问题。高分求高手赐教
- 窗口切换问题
- 现在还有人在研究Jabber么?
- Hibernate问题提问
- 在本地服务器上可以运行,传到网上就报错了。报错信息如下
- Hibernate问题,在线等
- ■■tomcat5.0跟4.0的servlet机制是否不同????■■
- 不明白??ctx.lookup("java:comp/env/ejb/StatelessDate");
- SOAP,不懂呀,这几个方法怎么用?
- 怎么设置 mysql 表中的唯一属性
- 求助: EJB调用webservice时,有这样的exception: org.apache.wsif.WSIFException: Port is not available and no alternative can be found。
HIBERNATE隐射文件中
<property name="stuId" column="stuId" type="string" unique="true" />然后设置让hibernate字段生成表,则在数据库中会自动帮你建立一个索引,即对学号的唯一性约束。
是在你没有给定pk值的时候才会发生做用,有两种,一个是在你没有给定的时候进行自增长,一个是不进行任何处理!
然而在你的处理过程中,这句话是不发挥作用的!但是你的学号到底是什么类型的?如果是String 型的话 type="java.lang.Integer"在映射就有问题。 要hibernate管理你的主键的话就不能选择那些手工输入的字段(即与业务相关的字段,如学号)作为主键,而需要建立一个和业务无关的字段。
你可以在类中(可能是Student)新加一个Integer字段id,然后
<id name="stuId" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
在程序中不同写stu.setId(1).因为在stu.save()时会自动帮你设置一个id值赋予stu。
也就是说在stu.save()之前,stu.getId()结果是null;而stu.save()之后stu.getId()结果是某一个Integer的数值 以上同意lailai_yyl的看法!