Here are the mappings for the 3 classes. I do have an 'id' field in the java classes that I did not show originally.
Code:
<class name="A" table="A">
<id name="id" type="long" unsaved-value="0" >
<column name="ID" sql-type="NUMBER(22)" not-null="true"/>
<generator class="sequence">
<param name="sequence">A_S</param>
</generator>
</id>
<set name="bChildren" inverse="true" cascade="all-delete-orphan">
<key column="A_ID"/>
<one-to-many class="B"/>
</set>
<set name="cChildren" inverse="true" cascade="all-delete-orphan">
<key column="A_ID"/>
<one-to-many class="C"/>
</set>
</class>
<class name="B" table="B">
<id name="id" type="long" unsaved-value="0" >
<column name="ID" sql-type="NUMBER(22)" not-null="true"/>
<generator class="sequence">
<param name="sequence">B_S</param>
</generator>
</id>
<many-to-one name="parent" column="A_ID"
class="A" not-null="true"/>
</class>
<class name="C" table="C">
<id name="id" type="long" unsaved-value="0" >
<column name="ID" sql-type="NUMBER(22)" not-null="true"/>
<generator class="sequence">
<param name="sequence">C_S</param>
</generator>
</id>
<many-to-one name="parent" column="A_ID"
class="A" not-null="true"/>
<many-to-one name="friend" column="B_ID"
class="B" not-null="true"/>
</class>