【发布时间】:2010-11-19 13:46:24
【问题描述】:
问题如下:
产品表。 3
joined-subclasses:DVD、CD、书籍。Role 表(复合 id:NAME、ROLE、PRODUCT)和按鉴别列 ROLE 的子类:映射到 Actor 的演员、导演、艺术家、作者等,导演,艺术家,作者java类; (我猜很平常)...
书有作者、CD艺术家、DVD演员和导演——这些都是通过
set建模的one-to-many关系指向项目的类别,例如作者、导演、艺术家等。它们只是角色的子类(参见 2。)
只要加入的子类只有一个这样的集合(人员/角色),一切正常。但是当它有两个,比如 DVD,演员和导演时,Hibernate 会抛出 WrongClassException?
XML 摘录(Product.hbm.xml):
<joined-subclass name="media.DVD" table="V_DVD" lazy="false">
<key column="IDPRODUCT"/>
<property column="FORMAT" name="format" type="string"/>
...
<set name="actors" lazy="false">
<key column="IDPRODUCT"/>
<one-to-many class="media.DVD$Actor"/>
</set>
<set name="directors" lazy="false">
<key column="IDPRODUCT"/>
<one-to-many class="media.DVD$Director"/>
</set>
...
</joined-subclass>
XML (Person.hbm.xml):
<class name="media.Person" table="V_ROLE">
<composite-id>
<key-property column="NAME" name="name" type="string"/>
<key-property column="ROLE" name="role" type="string"/>
<key-many-to-one class="media.Product" column="IDPRODUCT"
name="product"/>
</composite-id>
<discriminator column="ROLE" insert="false" type="string"/>
<property name="name"/>
<property name="role"/>
<many-to-one class="media.Product" column="IDPRODUCT"
insert="false" name="product" update="false"/>
<subclass discriminator-value="author" name="media.Book$Author"/>
<subclass discriminator-value="artist" name="media.Music$Artist"/>
<subclass discriminator-value="creator" name="media.DVD$Creator"/>
<subclass discriminator-value="director" name="media.DVD$Director"/>
<subclass discriminator-value="actor" name="media.DVD$Actor"/>
</class>
对我来说似乎还可以,但它会引发异常。 谢谢你的任何想法!
【问题讨论】:
标签: java hibernate orm set one-to-many