【发布时间】:2015-04-21 03:58:39
【问题描述】:
请看下面的 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>
它是我的数据库表Family的Hibernate映射类。我们使用 MySQL Work bench 单独创建数据库,然后生成映射类。如netbeans tutorial 的“生成 Hibernate 映射文件和 Java 类”部分所述,我们使用 netbeans 自动生成映射文件。
现在我们遇到了一个问题。也就是说,我们将表 Family 的 primary key (idFamily) 更改为 MySQL 中的 auto generated 字段。现在,我们如何更改上述休眠代码,以便将idFamily 识别为自动生成的代码?
另一个问题是,手动编辑一个映射类而不通过工具重新生成所有映射会“破坏”系统吗?举个例子,比如搞砸人际关系?
【问题讨论】:
-
为什么不为休眠重新生成文件并比较差异?
标签: java mysql xml hibernate netbeans