Ok,
Although you still cannot combine join and joined-sublass becasue it is prevented by the DTD, I have a workaround for this problem using <join> and <subclass>.
Basically, you combine the <join> and <subclass> with a discriminator, but "fake" the discriminator with a
formula attribute.
So now, your hibernate mapping would look as follows:
(pay special attention to the <class> <discriminator> element and the discriminator attributes of the subclasses)
Code:
<hibernate-mapping>
<class name="com.infozeal.tools.test.hibernate.Events" table="izdv.events">
<id name="id">
<generator class="increment"/>
</id>
<discriminator>
<formula>
CASE
WHEN (SELECT COUNT(*) FROM izdv.conf_event WHERE
izdv.conf_event.id = id) > 0 THEN 'CONFERENCE'
ELSE 'NETWORKING'
END
</formula>
</discriminator>
<property name="eventName" column="EVENT_NAME"/>
<join table="IZDV.subevents">
<key column="id"/>
<property name="eName" column="ename"/>
</join>
<subclass name="com.infozeal.tools.test.hibernate.ConferenceEvent" discriminator-value="CONFERENCE">
<join table="izdv.conf_event">
<key column="id"/>
<property name="seats"/>
</join>
<subclass>
<subclass name="com.infozeal.tools.test.hibernate.NetworkingEvent" discriminator-value="NETWORKING">
<join table="izdv.net_event">
<key column="id"/>
<property name="foodName"/>
</join>
<subclass>
</class>
</hibernate-mapping>