blob: b335de9ab863cdad0b94cce19966320fd81d68d9 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
This program and the accompanying materials are made available under the
terms of the Eclipse Public License v. 2.0 which is available at
http://www.eclipse.org/legal/epl-2.0,
or the Eclipse Distribution License v. 1.0 which is available at
http://www.eclipse.org/org/documents/edl-v10.php.
SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-->
<entity-mappings version="2.3" xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<description>XML extended composite advanced member_2 Test Model Instance Document</description>
<package>org.eclipse.persistence.testing.models.jpa.xml.composite.advanced.member_2</package>
<type-converter name="String2String" data-type="String" object-type="String"/>
<entity class="Employee" existence-checking="CHECK_DATABASE">
<customizer class="EmployeeCustomizer"/>
<!-- test the AUTO default for change tracking. -->
<change-tracking/>
<!-- This secondary table is identical to the one specified in the
advanced-extended-entity-mappings.xml. It is here on purpose
and used to test bug 240063. Do not remove it or change its
contents. -->
<secondary-table name="XML_MBR2_SALARY">
<primary-key-join-column name="E_ID" referenced-column-name="EMP_ID"/>
</secondary-table>
<optimistic-locking type="VERSION_COLUMN" cascade="true"/>
<cache type="SOFT_WEAK" size="730" shared="true" disable-hits="true" always-refresh="false" coordination-type="INVALIDATE_CHANGED_OBJECTS">
<!-- disable-hits is set to true. Do not change it, the employee customizer will set it to false and there is a test to verify that. -->
<expiry>1000</expiry>
</cache>
<object-type-converter name="sex" data-type="String" object-type="Employee$Gender">
<conversion-value data-value="F" object-value="Female"/>
<conversion-value data-value="M" object-value="Male"/>
<default-object-value>Male</default-object-value>
</object-type-converter>
<property name="entityName" value="XMLEmployee"/>
<property name="entityIntegerProperty" value="1" value-type="Integer"/>
<property name="ToBeOverriddenByXml" value="true" value-type="Boolean"/>
<attributes>
<id name="id">
<column name="EMP_ID"/>
<generated-value strategy="TABLE" generator="XML_MBR2_EMPLOYEE_TABLE_GENERATOR"/>
<property name="attributeName" value="id"/>
</id>
<basic name="firstName" access="FIELD">
<column name="F_NAME"/>
<convert>String2String</convert>
<property name="attributeName" value="firstName"/>
</basic>
<basic name="lastName" access="FIELD">
<column name="L_NAME"/>
<property name="attributeName" value="lastName"/>
<property name="BooleanProperty" value="true" value-type="java.lang.Boolean"/>
<property name="ByteProperty" value="1" value-type="java.lang.Byte"/>
<property name="CharacterProperty" value="A" value-type="java.lang.Character"/>
<property name="DoubleProperty" value="1" value-type="java.lang.Double"/>
<property name="FloatProperty" value="1" value-type="java.lang.Float"/>
<property name="IntegerProperty" value="1" value-type="java.lang.Integer"/>
<property name="LongProperty" value="1" value-type="java.lang.Long"/>
<property name="ShortProperty" value="1" value-type="java.lang.Short"/>
<property name="BigDecimalProperty" value="1" value-type="java.math.BigDecimal"/>
<property name="BigIntegerProperty" value="1" value-type="java.math.BigInteger"/>
<property name="TimeProperty" value="13:59:59" value-type="java.sql.Time"/>
<property name="TimeStampProperty" value="2008-04-10 13:59:59" value-type="java.sql.Timestamp"/>
<property name="DateProperty" value="2008-04-10" value-type="java.sql.Date"/>
</basic>
<basic name="sin">
<column name="SIN"/>
<property name="attributeName" value="sin"/>
<access-methods get-method="returnSIN" set-method="enterSIN"/>
</basic>
<basic name="gender">
<column name="GENDER"/>
<convert>sex</convert>
<property name="attributeName" value="gender"/>
</basic>
<basic name="salary">
<column table="XML_MBR2_SALARY"/>
<property name="attributeName" value="salary"/>
</basic>
<basic name="payScale">
<column name="PAY_SCALE"/>
<enumerated>STRING</enumerated>
<property name="attributeName" value="payScale"/>
</basic>
<element-collection name="responsibilities" composite-member="xml-composite-advanced-member_3">
<column name="DESCRIPTION"/>
<convert>String2String</convert>
<collection-table name="XML_MBR3_RESPONS">
<join-column name="EMP_ID"/>
</collection-table>
<property name="attributeName" value="responsibilities"/>
</element-collection>
<element-collection name="creditLines" fetch="EAGER" composite-member="xml-composite-advanced-member_3">
<map-key-convert>CreditLine</map-key-convert>
<map-key-column name="BANK"/>
<column name="ACCOUNT"/>
<convert>Long2String</convert>
<object-type-converter name="CreditLine">
<conversion-value data-value="RBC" object-value="RoyalBank"/>
<conversion-value data-value="CIBC" object-value="CanadianImperial"/>
<conversion-value data-value="SB" object-value="Scotiabank"/>
<conversion-value data-value="TD" object-value="TorontoDominion"/>
</object-type-converter>
<collection-table name="XML_MBR3_EMP_CREDITLINES">
<join-column name="EMP_ID"/>
</collection-table>
<property name="attributeName" value="creditLines"/>
</element-collection>
<element-collection name="creditCards" fetch="EAGER" composite-member="xml-composite-advanced-member_3">
<map-key-convert>CreditCard</map-key-convert>
<map-key-column name="CARD"/>
<column name="NUMB"/>
<convert>Long2String</convert>
<object-type-converter name="CreditCard">
<conversion-value data-value="VI" object-value="Visa"/>
<conversion-value data-value="AM" object-value="Amex"/>
<conversion-value data-value="MC" object-value="Mastercard"/>
<conversion-value data-value="DI" object-value="DinersClub"/>
</object-type-converter>
<type-converter name="Long2String" data-type="String" object-type="Long"/>
<collection-table name="XML_MBR3_EMP_CREDITCARDS">
<join-column name="EMP_ID"/>
</collection-table>
<property name="attributeName" value="creditCards"/>
</element-collection>
<version name="version">
<column name="VERSION"/>
<property name="attributeName" value="version"/>
</version>
<many-to-one name="address" target-entity="org.eclipse.persistence.testing.models.jpa.xml.composite.advanced.member_1.Address" fetch="LAZY">
<join-column name="ADDR_ID"/>
<cascade>
<cascade-persist/>
</cascade>
<!--join-fetch>OUTER</join-fetch-->
<property name="attributeName" value="address"/>
</many-to-one>
<many-to-one name="manager" target-entity="Employee" fetch="LAZY">
<join-column name="MANAGER_EMP_ID" referenced-column-name="EMP_ID"/>
<cascade>
<cascade-persist/>
</cascade>
<property name="attributeName" value="manager"/>
</many-to-one>
<one-to-many name="phoneNumbers" target-entity="org.eclipse.persistence.testing.models.jpa.xml.composite.advanced.member_3.PhoneNumber" mapped-by="owner">
<cascade>
<cascade-all/>
</cascade>
<property name="attributeName" value="phoneNumbers"/>
</one-to-many>
<one-to-many name="managedEmployees" target-entity="Employee" mapped-by="manager">
<cascade>
<cascade-all/>
</cascade>
<property name="attributeName" value="managedEmployees"/>
</one-to-many>
<one-to-many name="dealers" target-entity="org.eclipse.persistence.testing.models.jpa.xml.composite.advanced.member_3.Dealer">
<join-column name="FK_EMP_ID"/>
<cascade>
<cascade-persist/>
<cascade-merge/>
</cascade>
<property name="attributeName" value="dealers"/>
</one-to-many>
<many-to-many name="projects" target-entity="org.eclipse.persistence.testing.models.jpa.xml.composite.advanced.member_3.Project">
<order-by>name</order-by>
<join-table name="XML_MBR3_PROJ_EMP">
<join-column name="EMP_ID" referenced-column-name="EMP_ID"/>
<inverse-join-column name="PROJ_ID" referenced-column-name="PROJ_ID"/>
</join-table>
<cascade>
<cascade-persist/>
</cascade>
<property name="attributeName" value="projects"/>
</many-to-many>
<element-collection name="creditLines" fetch="EAGER" composite-member="xml-composite-advanced-member_3">
<map-key-convert>CreditLine</map-key-convert>
<map-key-column name="BANK"/>
<column name="ACCOUNT"/>
<convert>Long2String</convert>
<object-type-converter name="CreditLine">
<conversion-value data-value="RBC" object-value="RoyalBank"/>
<conversion-value data-value="CIBC" object-value="CanadianImperial"/>
<conversion-value data-value="SB" object-value="Scotiabank"/>
<conversion-value data-value="TD" object-value="TorontoDominion"/>
</object-type-converter>
<collection-table name="XML_MBR3_EMP_CREDITLINES">
<join-column name="EMP_ID"/>
</collection-table>
<property name="attributeName" value="creditLines"/>
</element-collection>
<embedded name="period">
<attribute-override name="startDate">
<column name="START_DATE" nullable="false"/>
</attribute-override>
<attribute-override name="endDate">
<column name="END_DATE" nullable="true"/>
</attribute-override>
<property name="attributeName" value="period"/>
</embedded>
<transformation name="normalHours" mutable="false">
<read-transformer method="buildNormalHours"/>
<write-transformer method="getStartTime">
<column name="START_TIME"/>
</write-transformer>
<write-transformer method="getEndTime">
<column name="END_TIME"/>
</write-transformer>
<property name="attributeName" value="normalHours"/>
</transformation>
<transformation name="overtimeHours" mutable="false">
<read-transformer transformer-class="AdvancedReadTransformer"/>
<write-transformer transformer-class="AdvancedWriteTransformer">
<column name="START_OVERTIME" column-definition="TIME"/>
</write-transformer>
<write-transformer transformer-class="AdvancedWriteTransformer">
<column name="END_OVERTIME" column-definition="TIME"/>
</write-transformer>
<property name="attributeName" value="overtimeHours"/>
</transformation>
</attributes>
</entity>
<embeddable class="EmploymentPeriod">
<property name="embeddableClassName" value="EmploymentPeriod"/>
<property name="ToBeOverriddenByXml" value="true" value-type="Boolean"/>
</embeddable>
</entity-mappings>