一个hibernate很奇怪的问题????

我的配置和原代码:
person.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<class name="goodok.Person" table="person">
<id name="id">

<column name="id" length="40"/>
<generator class="identity"/> //问题在这里?????

</id>
<property name="name" column="name" />
<property name="email" column="email" />
</class>
</hibernate-mapping>

Author.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<class name="goodok.Author" table="author" >
<id name="id" column="id">
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<property name="alias" column="alias" />
<one-to-one name="person" class="goodok.Person" cascade="all" constrained="true" />

</class>
</hibernate-mapping>


如果我把person.hbm.xml中的

<column name="id" length="40"/>
<generator class="identity"/> //问题在这里?????

改为
<column name="id" length="40"/>
<generator class="uuid.hex"/>

这是就可以往数据库中插入数据,但是数据库中的ID就是:2c0fa968fe51c3fa00fe51ce2c4d0026
的;

所以我把:uuid.hex 改为 identity

这时就不能往数据库中插入数据了;只能插入到person这张表里,而author表中就没有数据;

请问高手,这是怎么回事情,应该怎么改???????



我的配置和原代码:
person.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<class name=
"goodok.Person" table="person">
<id name=
"id">

<column name=
"id" length="40"/>
<generator class=
"identity"/> //问题在这里?????

</id>
<property name=
"name" column="name" />
<property name=
"email" column="email" />
</class>
</hibernate-mapping>

Author.hbm.xml:

<?xml version=
"1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<class name=
"goodok.Author" table="author" >
<id name=
"id" column="id">
<generator class=
"foreign">
<param name=
"property">person</param>
</generator>
</id>
<property name=
"alias" column="alias" />
<one-to-one name=
"person" class="goodok.Person" cascade="all" constrained="true" />

</class>
</hibernate-mapping>


如果我把person.hbm.xml中的

<column name=
"id" length="40"/>
<generator class=
"identity"/> //问题在这里?????

改为
<column name=
"id" length="40"/>
<generator class=
"uuid.hex"/>

这是就可以往数据库中插入数据,但是数据库中的ID就是:2c0fa968fe51c3fa00fe51ce2c4d0026
的;

所以我把:uuid.hex 改为 identity

这时就不能往数据库中插入数据了;只能插入到person这张表里,而author表中就没有数据;

请问高手,这是怎么回事情,应该怎么改???????

怎么没有人回答哟;


<column name="id" length="40"/>
<generator class="identity"/>

改为:

<column name="id" length="40" type="long"/>
<generator class="identity"/>

可是还是不正确

有高手知道原因吗???


怎么没有人回答哟;


<column name="id" length="40"/>
<generator class=
"identity"/>

改为:

<column name=
"id" length="40" type="long"/>
<generator class=
"identity"/>

可是还是不正确

有高手知道原因吗???

你的数据库是什么呢?

mysql

查下mysql是否支持idenfiy模式的ID生成机制先

一般可以用native让hibernate自己去选择最适合当前数据库的主键生成

还有,你的id是什么类型的?