浏览 3251 次
锁定老帖子 主题:请教一个问题,关于Mapping的
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-03-22
id - person的标识 name - person的姓名 creator - 创建新person的person的标识 请问这种情况应该怎么mapping creator这个属性呢?? java code: public class Person{ private int id; private String name; private Person creator; ....... //getter, setter } Person.hbm.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="Person" table="Person"> <id column="id" length="10" name="id" type="integer"> <generator class="increment"/> </id> <property column="name" length="20" name="name" type="string"/> <property column="creator" name="creator" type="Person"/> </class> </hibernate-mapping> 问题就是怎么把creator映射上去,并持久化?不知道这个mapping的XML写的对嘛,请大家指点迷津!!! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-03-22
Easy!
Mapping: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="Person" table="Person"> <id column="id" length="10" name="id" type="integer"> <generator class="increment"/> </id> <property column="name" length="20" name="name" type="string"/> <many-to-one column="creator" name="creator" class="Person"/> </class> </hibernate-mapping> |
|
返回顶楼 | |
发表时间:2004-03-23
再问楼上,自包含也用many to one来映射??
|
|
返回顶楼 | |
发表时间:2004-03-23
我感觉应该用one to one ,creator怎么来说也是一对一的啊,怎么就一对多了呢?疑惑中
谁能解释一下??? |
|
返回顶楼 | |
发表时间:2004-03-27
我认为one-to-one是用于两个表的情况下,两个表通过id关联,比如person和author
而这里用了many-to-one正好可以通过creator得到这个persion的creator hibernate文档上有一个例子: hibernate-mapping package="eg"> <class name="Cat" table="CATS" discriminator-value="C"> <id name="id" column="uid" type="long"> <generator class="hilo"/> </id> <discriminator column="subclass" type="character"/> <property name="birthdate" type="date"/> <property name="color" not-null="true"/> <property name="sex" not-null="true" update="false"/> <property name="weight"/> <many-to-one name="mather" column="mather_id"/> <set name="kittens"> <key column="mother_id"/> <one-to-many class="Cat"/> </set> <subclass name="DomesticCat" discriminator-value="D"> <property name="name" type="string"/> </subclass> </class> </hibernate-mapping> 这就是一个自引用的例子 另外我感觉persion与creator的关系不是one-to-one的. 因为一个人可以很多人的创建者 所以人与creator是一对多的关系. 可以与person与author的关系对比一下^_^ |
|
返回顶楼 | |
发表时间:2004-03-27
另外可以把person与creator的关系与cat的mother与child联系起来
即一个人可以创建很多人,而一个人只能由一个人创建 和一只猫可以生很多猫,而一只猫只能由一个猫生出来 联系hibernate文档中的映射文件就明白了吧^_^ 注:hibernate文档上的映射文件写错了 <many-to-one name="mate" column="mate_id"/> <set name="kittens"> <key column="mother_id"/> <one-to-many class="Cat"/> </set> 应该把mate_id改成mother_id 不知道我说的对不对 |
|
返回顶楼 | |