<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<!--

-->

<hibernate-mapping package="org.hibernate.test.component.basic">

	<class name="User" table="T_USER">
		<id name="userName"/>
		<timestamp name="lastModified"/>
		<property name="password" column="`password`" not-null="true" optimistic-lock="false"/>
		<component name="person">
			<property name="name" update="false" not-null="true"/>
			<property name="dob" update="false" not-null="true"/>
			<property name="address"/>
			<property name="previousAddress" insert="false"/>
			<property name="yob" formula="year(dob)"/>
			<property name="heightInches">
				<column name="height_centimeters"
					not-null="true" 
					read="height_centimeters / 2.54E0"
					write="? * 2.54E0"/>
			</property>
			<property name="currentAddress"
				column="address"
				insert="false"
				update="false"/>
		</component>
	</class>

	<class name="Employee" table="T_EMP">
        <id name="id" type="long" column="ID">
            <generator class="increment"/>
        </id>
        <property name="hireDate" type="date" column="HIRE_DATE"/>
        <component name="person">
			<property name="name" update="false" not-null="true"/>
			<property name="dob" update="false" not-null="true"/>
		</component>
		<component name="optionalComponent">
			<property name="value1" not-null="false"/>
			<property name="value2" not-null="false"/>
		</component>
		<set name="directReports" cascade="all-delete-orphan,merge" lazy="true">
			<key column="PARENT_ID" />
			<one-to-many class="Employee"/>
		</set>
	</class>

	<query name="userNameIn"><![CDATA[from User where person.name in (:nameList) or userName in (:nameList)]]></query>

</hibernate-mapping>
