如何在休眠中映射自动增量字段?

Pea*_*Gen 2 java xml mysql netbeans hibernate

请看下面的XML代码

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated Feb 17, 2015 10:01:43 PM by Hibernate Tools 4.3.1 -->
<hibernate-mapping>
    <class name="model.main.Family" table="family" catalog="****" optimistic-lock="version">
        <id name="idFamily" type="int">
            <column name="idFamily" />
            <generator class="assigned" />
        </id>
        <many-to-one name="employee" class="model.main.Employee" fetch="select">
            <column name="idEmployee" not-null="true" />
        </many-to-one>
        <property name="firstName" type="string">
            <column name="FirstName" length="45" />
        </property>
        <property name="middleName" type="string">
            <column name="MiddleName" length="45" />
        </property>
        <property name="lastName" type="string">
            <column name="LastName" length="45" />
        </property>
        <property name="dob" type="date">
            <column name="DOB" length="10" />
        </property>
        <property name="passportNumber" type="string">
            <column name="PassportNumber" length="45" not-null="true" />
        </property>
        <property name="dateLeft" type="date">
            <column name="DateLeft" length="10" />
        </property>
        <property name="lastUpdated" type="timestamp">
            <column name="LastUpdated" length="19" not-null="true" />
        </property>
        <set name="visas" table="visa" inverse="true" lazy="true" fetch="select">
            <key>
                <column name="idFamily" />
            </key>
            <one-to-many class="model.main.Visa" />
        </set>
    </class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

它是Hibernate数据库表的映射类Family。我们使用MySQL Work Bench单独创建数据库,然后生成映射类。如netbeans教程的“生成Hibernate映射文件和Java类”一节所述,我们使用netbeans自动生成了映射文件。

现在我们有一个问题。也就是说,我们将表的primary keyidFamily)更改为MySQL内的Family一个auto generated字段。现在,我们如何更改上面的休眠代码,以将其标识idFamily为自动生成的代码?

另一个问题是,手动编辑一个映射类而不通过工具重新生成所有映射会“破坏”系统吗?例如,喜欢搞砸关系吗?

Nia*_*ath 6

在注释中它对我有用

@GeneratedValue(strategy= GenerationType.IDENTITY)
Run Code Online (Sandbox Code Playgroud)

为你希望它有用

<generated-value strategy="IDENTITY" /> 
Run Code Online (Sandbox Code Playgroud)