0
<hibernate-mapping>
   <class name="Employee" table="EMPLOYEE">
      <meta attribute="class-description">
         This class contains the employee detail. 
      </meta>
      <id name="id" type="int" column="id">
         <generator class="native"/>
      </id>
      <property name="firstName" column="first_name" type="string"/>
      <property name="lastName" column="last_name" type="string"/>
      <property name="salary" column="salary" type="int"/>
   </class>
</hibernate-mapping>

正如您在上面看到的映射文件 ID 是使用 generator class="native" 自动生成的

那么有没有一种方法可以根据我的java逻辑设置这个ID。我不希望它为我自动生成,我想使用我自己的逻辑来生成它然后插入到表中,还有可能当我运行代码在表中插入一个值时,表得到如果数据库中不存在它会自动在数据库中创建,我听说有一种方法可以做到这一点。

4

2 回答 2

1

如果你没有为你的主键属性指定任何生成器,hibernate 将假定你使用该assign策略。该assign策略告诉休眠您将自己设置 id,因此休眠不会帮助您定义 id 值。(如果您尝试使用 null/已经存在的 id 持久化实体,hibernate 只会抛出异常)

所以像这样定义你的映射:

<hibernate-mapping>
 <class name="Employee" table="EMPLOYEE">
  <meta attribute="class-description">
     This class contains the employee detail. 
  </meta>
  <id name="id" type="int" column="id"/>
  <property name="firstName" column="first_name" type="string"/>
  <property name="lastName" column="last_name" type="string"/>
  <property name="salary" column="salary" type="int"/>
 </class>
</hibernate-mapping>
于 2013-11-15T09:00:40.073 回答
1

从这一点看官方文档:所有 id 生成器都有很好的解释。
您还可以查看使用 JPA 和 Hibernate 时如何选择 id 生成策略

于 2013-11-15T07:40:22.980 回答