################################################################################
# Copyright (c) 2008, 2012 Oracle. All rights reserved.
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v1.0, which accompanies this distribution
# and is available at http://www.eclipse.org/legal/epl-v10.html.
# 
# Contributors:
#     Oracle - initial API and implementation
################################################################################

CACHE_EXPIRY_AND_EXPIRY_TIME_OF_DAY_BOTH_SPECIFIED=The @Cache annotation on entity \"{0}\" has both expiry() and expiryTimeOfDay() specified. Only one of the two may be specified
CONVERTER_CLASS_EXISTS=The converter class \"{0}\" does not exist on the project classpath
CONVERTER_CLASS_DEFINED=The converter class must be defined.
CONVERTER_CLASS_IMPLEMENTS_CONVERTER=The converter class \"{0}\" does not implement the org.eclipse.persistence.mappings.converters.Converter interface
STRUCT_CONVERTER_CLASS_IMPLEMENTS_STRUCT_CONVERTER=The struct converter class \"{0}\" does not implement the org.eclipse.persistence.platform.database.converters.StructConverter interface
CONVERTER_DUPLICATE_NAME=Multiple converters named \"{0}\" defined in this persistence unit
CONVERTER_NAME_UNDEFINED=Converter is unnamed. All converters require a name.
RESERVED_CONVERTER_NAME=Converter name must not be a reserved converter name.
DESCRIPTOR_CUSTOMIZER_CLASS_NOT_SPECIFIED=An entity customizer class should be specified
DESCRIPTOR_CUSTOMIZER_CLASS_NOT_EXIST=The entity customizer class \"{0}\" does not exist on the project classpath
DESCRIPTOR_CUSTOMIZER_CLASS_NOT_VALID=The entity customizer class \"{0}\" must have a public, zero-argument constructor
DESCRIPTOR_CUSTOMIZER_CLASS_IMPLEMENTS_DESCRIPTOR_CUSTOMIZER=The entity customizer class \"{0}\" does not implement the org.eclipse.persistence.config.DescriptorCustomizer interface
EXCEPTION_HANDLER_CLASS_NOT_SPECIFIED=An exception handler class should be specified
EXCEPTION_HANDLER_CLASS_NOT_EXIST=The exception handler class \"{0}\" does not exist on the project classpath
EXCEPTION_HANDLER_CLASS_NOT_VALID=The exception handler class \"{0}\" must have a public, zero-argument constructor
EXCEPTION_HANDLER_CLASS_IMPLEMENTS_EXCEPTION_HANDLER=The exception handler class \"{0}\" does not implement the org.eclipse.persistence.exceptions.ExceptionHandler interface
GENERATOR_DUPLICATE_NAME=Multiple generators named \"{0}\" defined in this persistence unit
GENERATOR_EQUIVALENT=Equivalent generator \"{0}\" defined in this persistence unit, which may not be portable
ID_MAPPING_UNRESOLVED_CONVERTER_NAME=The specified converter \"{0}\" for mapping \"{1}\" cannot be resolved
MULTIPLE_OBJECT_VALUES_FOR_DATA_VALUE=Multiple object values are specified for the data value \"{0}\"
PERSISTENT_ATTRIBUTE_INVALID_VERSION_MAPPING_TYPE=The persistent field or property for a Version mapping must be of type int, Integer, short, Short, long, Long, or Timestamp
PERSISTENCE_UNIT_LEGACY_DESCRIPTOR_CUSTOMIZER=\"{0}\" is a legacy descriptor customizer property. Consider migration to the EclipseLink customizer settings via annotation or XML mapping file
PERSISTENCE_UNIT_LEGACY_ENTITY_CACHING=\"{0}\" is a legacy entity caching property. Consider migration to JPA 2.0 and EclipseLink cache settings via annotation or XML mapping file
PERSISTENCE_UNIT_CACHING_PROPERTY_IGNORED=Property \"{0}\" will be ignored as shared-cache-mode is set to NONE
QUERY_DUPLICATE_NAME=Multiple queries named \"{0}\" defined in this persistence unit
QUERY_EQUIVALENT=Equivalent query \"{0}\" defined in this persistence unit, which may not be portable
SESSION_CUSTOMIZER_CLASS_NOT_SPECIFIED=A session customizer class should be specified
SESSION_CUSTOMIZER_CLASS_NOT_EXIST=The session customizer class \"{0}\" does not exist on the project classpath
SESSION_CUSTOMIZER_CLASS_NOT_VALID=The session customizer class \"{0}\" must have a public, zero-argument constructor
SESSION_CUSTOMIZER_CLASS_IMPLEMENTS_SESSION_CUSTOMIZER=The session customizer class \"{0}\" does not implement the org.eclipse.persistence.config.SessionCustomizer interface
SESSION_LOGGER_CLASS_NOT_SPECIFIED=A session logger class should be specified
SESSION_LOGGER_CLASS_NOT_EXIST=The session logger class \"{0}\" does not exist on the project classpath
SESSION_LOGGER_CLASS_IMPLEMENTS_SESSION_LOG=The session logger class \"{0}\" does not implement the org.eclipse.persistence.logging.SessionLog interface
SESSION_PROFILER_CLASS_NOT_SPECIFIED=A session profiler class should be specified
SESSION_PROFILER_CLASS_NOT_EXIST=The session profiler class \"{0}\" does not exist on the project classpath
SESSION_PROFILER_CLASS_NOT_VALID=The session profiler class \"{0}\" must have a public, zero-argument constructor
SESSION_PROFILER_CLASS_IMPLEMENTS_SESSION_PROFILER=The session profiler class \"{0}\" does not implement the org.eclipse.persistence.sessions.SessionProfiler interface
BASIC_COLLECTION_MAPPING_DEPRECATED=The type basic-collection is deprecated
BASIC_MAP_MAPPING_DEPRECATED=The type basic-map is deprecated
TYPE_MAPPING_MEMBER_CLASS_NOT_STATIC=The java class for mapped type \"{0}\" is a non-static member class 
TENANT_DISCRIMINATOR_COLUMN_UNRESOLVED_NAME=Tenant discriminator column \"{0}\" cannot be resolved on table \"{1}\"
VIRTUAL_TENANT_DISCRIMINATOR_COLUMN_UNRESOLVED_NAME=In default tenant discriminator column, name \"{0}\" cannot be resolved on table \"{1}\"
VIRTUAL_ATTRIBUTE_TENANT_DISCRIMINATOR_COLUMN_UNRESOLVED_NAME=In implied attribute \"{0}\", tenant discriminator column \"{1}\" cannot be resolved on table \"{2}\"
TENANT_DISCRIMINATOR_COLUMN_TABLE_NOT_VALID=Table \"{0}\" for tenant discriminator column \"{1}\" {2}
VIRTUAL_TENANT_DISCRIMINATOR_COLUMN_TABLE_NOT_VALID=In default tenant discriminator column \"{1}\", table \"{0}\" {2}
VIRTUAL_ATTRIBUTE_TENANT_DISCRIMINATOR_COLUMN_TABLE_NOT_VALID=In implied attribute \"{0}\", table \"{1}\" for tenant discriminator column \"{2}\" {3}
MULTITENANT_NOT_SPECIFIED_WITH_TENANT_DISCRIMINATOR_COLUMNS=Tenant discriminator columns cannot be specified without the Multitenant annotation
MULTITENANT_METADATA_CANNOT_BE_SPECIFIED_ON_NON_ROOT_ENTITY=Multitenant metadata cannot be specified on non-root entities in a SINGLE_TABLE or JOINED inheritance hierarchy
MULTITENANT_TABLE_PER_TENANT_NOT_SUPPORTED=EclipseLink does not support MultitenantType.TABLE_PER_TENANT
MULTITENANT_VPD_MIGHT_NOT_BE_NOT_SUPPORTED=Target database is not specified in the persistence.xml, multitenancy with Oracle VPD might not be supported
MULTITENANT_VPD_NOT_SUPPORTED_ON_NON_ORACLE_DATABASE_PLATFORM=Target database is \"{0}\", multitenancy with Oracle VPD is only supported on Oracle platform
MULTITENANT_VPD_INCLUDE_CRITERIA_WILL_BE_IGNORED=Include criteria is false when multitenant type is VPD. The specified setting will be ignored.
VIRTUAL_ATTRIBUTE_NO_ATTRIBUTE_TYPE_SPECIFIED=Virtual attribute \"{0}\" must specify an attribute-type
VIRTUAL_ATTRIBUTE_ATTRIBUTE_TYPE_DOES_NOT_EXIST=Attribute type \"{0}\" does not exist
VIRTUAL_TYPE_PARENT_CLASS_DOES_NOT_EXIST=Parent class \"{0}\" does not exist