| /* |
| * Copyright (c) 1998, 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 |
| */ |
| |
| // Contributors: |
| // ailitchev - Uni-directional OneToMany |
| package org.eclipse.persistence.testing.models.unidirectional; |
| |
| import org.eclipse.persistence.descriptors.*; |
| import org.eclipse.persistence.mappings.*; |
| |
| /** |
| * |
| */ |
| public class EmployeeProject extends org.eclipse.persistence.sessions.Project { |
| public static boolean ownerIdIsInPK = false; |
| public EmployeeProject() { |
| setName("UnidirectionalEmployee"); |
| |
| addDescriptor(buildEmployeeDescriptor()); |
| addDescriptor(buildPhoneNumberDescriptor()); |
| } |
| |
| public ClassDescriptor buildEmployeeDescriptor() { |
| RelationalDescriptor descriptor = new RelationalDescriptor(); |
| descriptor.setJavaClass(org.eclipse.persistence.testing.models.unidirectional.Employee.class); |
| descriptor.addTableName("UNIDIR_EMPLOYEE"); |
| descriptor.addPrimaryKeyFieldName("UNIDIR_EMPLOYEE.EMP_ID"); |
| |
| // Descriptor Properties. |
| descriptor.useSoftCacheWeakIdentityMap(); |
| descriptor.setIdentityMapSize(100); |
| descriptor.setSequenceNumberFieldName("UNIDIR_EMPLOYEE.EMP_ID"); |
| descriptor.setSequenceNumberName("UNIDIR_EMP_SEQ"); |
| VersionLockingPolicy lockingPolicy = new VersionLockingPolicy(); |
| lockingPolicy.setWriteLockFieldName("UNIDIR_EMPLOYEE.VERSION"); |
| //**temp_begin |
| lockingPolicy.setIsCascaded(true); |
| //**temp_end |
| descriptor.setOptimisticLockingPolicy(lockingPolicy); |
| descriptor.setAlias("UnidirectionalEmployee"); |
| |
| // Cache Invalidation Policy |
| // Query Manager. |
| descriptor.getQueryManager().checkCacheForDoesExist(); |
| |
| // Named Queries. |
| // Event Manager. |
| // Mappings. |
| DirectToFieldMapping firstNameMapping = new DirectToFieldMapping(); |
| firstNameMapping.setAttributeName("firstName"); |
| firstNameMapping.setFieldName("UNIDIR_EMPLOYEE.F_NAME"); |
| firstNameMapping.setNullValue(""); |
| descriptor.addMapping(firstNameMapping); |
| |
| DirectToFieldMapping idMapping = new DirectToFieldMapping(); |
| idMapping.setAttributeName("id"); |
| idMapping.setFieldName("UNIDIR_EMPLOYEE.EMP_ID"); |
| descriptor.addMapping(idMapping); |
| |
| DirectToFieldMapping lastNameMapping = new DirectToFieldMapping(); |
| lastNameMapping.setAttributeName("lastName"); |
| lastNameMapping.setFieldName("UNIDIR_EMPLOYEE.L_NAME"); |
| lastNameMapping.setNullValue(""); |
| descriptor.addMapping(lastNameMapping); |
| |
| UnidirectionalOneToManyMapping managedEmployeesMapping = new UnidirectionalOneToManyMapping(); |
| managedEmployeesMapping.setAttributeName("managedEmployees"); |
| managedEmployeesMapping.setReferenceClass(org.eclipse.persistence.testing.models.unidirectional.Employee.class); |
| managedEmployeesMapping.useBasicIndirection(); |
| managedEmployeesMapping.addTargetForeignKeyFieldName("UNIDIR_EMPLOYEE.MANAGER_ID", "UNIDIR_EMPLOYEE.EMP_ID"); |
| descriptor.addMapping(managedEmployeesMapping); |
| |
| UnidirectionalOneToManyMapping phoneNumbersMapping = new UnidirectionalOneToManyMapping(); |
| phoneNumbersMapping.setAttributeName("phoneNumbers"); |
| phoneNumbersMapping.setReferenceClass(org.eclipse.persistence.testing.models.unidirectional.PhoneNumber.class); |
| phoneNumbersMapping.useBasicIndirection(); |
| phoneNumbersMapping.privateOwnedRelationship(); |
| phoneNumbersMapping.addTargetForeignKeyFieldName("UNIDIR_PHONE.EMP_ID", "UNIDIR_EMPLOYEE.EMP_ID"); |
| descriptor.addMapping(phoneNumbersMapping); |
| |
| return descriptor; |
| } |
| |
| public ClassDescriptor buildPhoneNumberDescriptor() { |
| RelationalDescriptor descriptor = new RelationalDescriptor(); |
| descriptor.setJavaClass(org.eclipse.persistence.testing.models.unidirectional.PhoneNumber.class); |
| descriptor.addTableName("UNIDIR_PHONE"); |
| if(ownerIdIsInPK) { |
| descriptor.addPrimaryKeyFieldName("UNIDIR_PHONE.EMP_ID"); |
| descriptor.addPrimaryKeyFieldName("UNIDIR_PHONE.TYPE"); |
| } else { |
| descriptor.addPrimaryKeyFieldName("UNIDIR_PHONE.AREA_CODE"); |
| descriptor.addPrimaryKeyFieldName("UNIDIR_PHONE.P_NUMBER"); |
| } |
| |
| // Descriptor Properties. |
| descriptor.useSoftCacheWeakIdentityMap(); |
| descriptor.setIdentityMapSize(100); |
| descriptor.setAlias("PhoneNumber"); |
| |
| // Cache Invalidation Policy |
| // Query Manager. |
| descriptor.getQueryManager().checkCacheForDoesExist(); |
| |
| // Event Manager. |
| // Query keys. |
| // Mappings. |
| if(ownerIdIsInPK) { |
| DirectToFieldMapping ownerIdMapping = new DirectToFieldMapping(); |
| ownerIdMapping.setAttributeName("ownerId"); |
| ownerIdMapping.setFieldName("UNIDIR_PHONE.EMP_ID"); |
| descriptor.addMapping(ownerIdMapping); |
| } |
| |
| DirectToFieldMapping areaCodeMapping = new DirectToFieldMapping(); |
| areaCodeMapping.setAttributeName("areaCode"); |
| areaCodeMapping.setFieldName("UNIDIR_PHONE.AREA_CODE"); |
| descriptor.addMapping(areaCodeMapping); |
| |
| DirectToFieldMapping numberMapping = new DirectToFieldMapping(); |
| numberMapping.setAttributeName("number"); |
| numberMapping.setFieldName("UNIDIR_PHONE.P_NUMBER"); |
| descriptor.addMapping(numberMapping); |
| |
| DirectToFieldMapping typeMapping = new DirectToFieldMapping(); |
| typeMapping.setAttributeName("type"); |
| typeMapping.setFieldName("UNIDIR_PHONE.TYPE"); |
| descriptor.addMapping(typeMapping); |
| |
| return descriptor; |
| } |
| } |