<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="com.bd.movie.domain" >
<class name="com.bd.movie.domain.Engagement"
table="ENGAGEMENT">
<id name="id" >
<generator class="native" />
</id>
<property name="UUIDString" />
<property name="role" />
<many-to-one name="person" column="PERSON_ID"
class="com.bd.movie.domain.Person" />
<many-to-one name="media" column="MEDIA_ID"
class="com.bd.movie.domain.Media" />
</class>
<class name="com.bd.movie.domain.Library"
table="LIBRARY">
<id name="id" >
<generator class="native" />
</id>
<property name="name" />
<set name="media"
lazy="false"
inverse="true"
cascade="all">
<!-- use cascade="cascade-delete-orphan" to delete children when parent is deleted -->
<key column="LIBRARY_ID" />
<one-to-many class="com.bd.movie.domain.PhysicalMedia" />
</set>
</class>
<class name="com.bd.movie.domain.Media"
table="MEDIA">
<id name="id" >
<generator class="native" />
</id>
<discriminator column="MEDIA_TYPE" type="string" />
<property name="UUIDString" />
<property name="title" />
<set name="engagements"
lazy="false"
inverse="true"
cascade="all">
<!-- use cascade="cascade-delete-orphan" to delete children when parent is deleted -->
<key column="MEDIA_ID" />
<one-to-many class="com.bd.movie.domain.Engagement" />
</set>
<set name="characters"
table="MEDIA_MEDIACHARACTER"
lazy="false"
cascade="all">
<key column="MEDIA_ID" />
<many-to-many
column="MEDIACHARACTER_ID"
class="com.bd.movie.domain.MediaCharacter" />
</set>
<set name="physicalMedia"
table="MEDIA_PHYSICALMEDIA"
lazy="false"
cascade="all">
<key column="MEDIA_ID" />
<many-to-many
column="PHYSICALMEDIA_ID"
class="com.bd.movie.domain.PhysicalMedia" />
</set>
<joined-subclass name="com.bd.movie.domain.Book"
table="BOOK">
<key column="MEDIA_ID" />
<property name="isbn" />
</joined-subclass>
<joined-subclass name="com.bd.movie.domain.Movie"
table="MOVIE">
<key column="MEDIA_ID" />
<property name="urlIMDB" />
<property name="playLength" />
</joined-subclass>
</class>
<class name="com.bd.movie.domain.MediaCharacter"
table="MEDIACHARACTER">
<id name="id" >
<generator class="native" />
</id>
<property name="UUIDString" />
<property name="name" />
<set name="existsInMedia"
inverse="true"
table="MEDIA_MEDIACHARACTER"
lazy="false"
cascade="all">
<key column="MEDIACHARACTER_ID" />
<many-to-many
column="MEDIA_ID"
class="com.bd.movie.domain.Media" />
</set>
<set name="playedBy"
table="MEDIACHARACTER_PERSON"
lazy="false"
cascade="all">
<key column="MEDIACHARACTER_ID" />
<many-to-many
column="PERSON_ID"
class="com.bd.movie.domain.Person" />
</set>
</class>
<class name="com.bd.movie.domain.Person"
table="PERSON">
<id name="id" >
<generator class="native" />
</id>
<property name="name" />
<property name="age" />
<property name="ssn" />
<set name="engagements"
lazy="false"
inverse="true"
cascade="all">
<!-- use cascade="cascade-delete-orphan" to delete children when parent is deleted -->
<key column="PERSON_ID" />
<one-to-many class="com.bd.movie.domain.Engagement" />
</set>
<set name="plays"
inverse="true"
table="MEDIACHARACTER_PERSON"
lazy="false"
cascade="all">
<key column="PERSON_ID" />
<many-to-many
column="MEDIACHARACTER_ID"
class="com.bd.movie.domain.MediaCharacter" />
</set>
</class>
<class name="com.bd.movie.domain.PhysicalMedia"
table="PHYSICALMEDIA">
<id name="id" >
<generator class="native" />
</id>
<property name="UUIDString" />
<property name="status" />
<property name="location" />
<many-to-one name="library" column="LIBRARY_ID"
class="com.bd.movie.domain.Library" />
<set name="media"
inverse="true"
table="MEDIA_PHYSICALMEDIA"
lazy="false"
cascade="all">
<key column="PHYSICALMEDIA_ID" />
<many-to-many
column="MEDIA_ID"
class="com.bd.movie.domain.Media" />
</set>
</class>
</hibernate-mapping>