浏览 3565 次
锁定老帖子 主题:为什么我的子类总映射不成功?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-03-11
<hibernate-mapping package="test.hibernate"> <class name="test.hibernate.Team" table="DB_HQBG..T_TEST_TEAM" polymorphism="explicit"> <id name="id" type="string" unsaved-value="null"> <column name="ID" sql-type="char(32);" not-null="true"/> <generator class="uuid.hex"/> </id> <property name="name"> <column name="NAME" sql-type="char(10);"/> </property> ....... <subclass name="TeamInfo"> <property name="country" type="string"> <column name="COUNTRY" sql-type="char(10);"/> </property> ...... </subclass> <subclass name="test.hibernate.TeamOwner"> <property name="owner" type="string"> <column name="OWNER" sql-type="char(10);"/> </property> ..... </subclass> </class> </hibernate-mapping> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-03-11
另外,我在Team中,用到了one-to-one, ont-to-many,和这个有关吗?
|
|
返回顶楼 | |
发表时间:2004-03-11
<id name ="**" column="**"..
没有column元素的 |
|
返回顶楼 | |
发表时间:2004-03-11
我知道原因了,是我没有定义<discriminator>元素。
但是必须在Table中有这么一个相应的列吗?为什么hibernate实例化类需要依赖数据库呢?他不是有polymorphism属性吗?设置成explicit不可以吗? 真让人郁闷,有在实际项目中用subclass的吗?感觉如何? |
|
返回顶楼 | |
发表时间:2004-03-11
winterchipmunk 写道 我知道原因了,是我没有定义<discriminator>元素。
但是必须在Table中有这么一个相应的列吗?为什么hibernate实例化类需要依赖数据库呢?他不是有polymorphism属性吗?设置成explicit不可以吗? 真让人郁闷,有在实际项目中用subclass的吗?感觉如何? 子类可以有两种映射方式,一种是存放在一张表中的,一种是使用joined subclass。前一种只能在table中设置一个字段来区分不同的子类,后一个就是多个表了。多态的属性表示是否自动返回子类的实例,如果设成explicit就需要你在查询时指定子类的类型. 引用 Implicit (隐式)的多态是指,如果查询中给出的是任何超类、该类实现的接口或者该类的名字,都会返回这个类的实例;如果查询中给出的是子类的名字,则会返回子类的实例。 Explicit (显式)的多态是指,只有在查询中给出的明确是该类的名字时才会返回这个类的实例;同时只有当在这个<class>的定义中作为<subclass>或者<joined-subclass>出现的子类,才会可能返回。 大多数情况下,默认的polymorphism="implicit"都是合适的。 显式的多态在有两个不同的类映射到同一个表的时候很有用。(允许一个“轻型”的类,只包含部分表字段)。
|
|
返回顶楼 | |
发表时间:2004-03-12
谢谢sayor,我在hibernate reference documentation中看过你引用的那段话。所以我感觉可以用explicit的方式来自动识别需要实例化的类,而不需要在字段中指定discriminator。因为当我们查询数据库的时候,就是实例化类的时候,应该已经明确我们需要的子类,而不仅仅是接口或是基类。
我之所以用subclass,而不能用joined-subclass,是因为我要对一张表映射多个类,之所以这样,主要是因为有这种可能:不同权限的人看到表的内容不一样,所以我需要根据不同需求,得到不同的子类实例,即只访问部分字段。而不必每次都放回所有字段内容。 不知道大家都是怎么处理我的上述问题的,请多赐教:) |
|
返回顶楼 | |