日期:2014-05-19  浏览次数:20608 次

hibernate主键生成策略,使用XML配置与使用Annotation配置,是否只需要一个就可以了。
RT
想实现的功能很简单,在向数据库插入的时候,主键ID自动增加。
可以使用Xml配置,即在 XXX.hbm.xml这样写:
   
<id name="主键在java类中的字段名" column="对应表中字段" type="类型 ">

  <generator class="native"/>

</id>

或者使用Annotation配置,假设我这样写:@GeneratedValue

是不是都可以实现我想达到的功能?

但是我在实际试验的时候发现,第一种方法可行。但是在验证第二种方法的时候,出现点小问题。

我是这样做的,在xxx.hbm.XML文件中把 <generator class="native"/>这句话删除,在Anntation中主键GET方法前加上@GeneratedValue
但是结无法插入,提示是说“Hiberanate抛错:"当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'student' 中的标识列插入显式值"
但是如果将xxx.hbm.XML文件中把 <generator class="native"/>这句话写上就没问题了。。但是明显的Anntation的主键省城策略没有起到作用。。。

------解决方案--------------------
你要么全用注解 要么全用配置文件 不要两个混用
------解决方案--------------------
在类名前边加上@Entity
Java code

@Entity
public class 类{}

------解决方案--------------------
楼上说的都对,xml和annotation不能混用,个人建议用annotation方式很简单
------解决方案--------------------
一个是注解配置方式,一个是xml配置方式。
------解决方案--------------------
你要么全用注解 要么全用配置文件 不要两个混用 你两者不能同时使用