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

# JptJpaUiDetailsMessages2_0

CASCADE_PANE_DETACH=Detach

COLLECTION_TABLE_COMPOSITE_TITLE=Collection Table
COLLECTION_TABLE_COMPOSITE_JOIN_COLUMN=Join columns
COLLECTION_TABLE_COMPOSITE_NAME=Name:
COLLECTION_TABLE_COMPOSITE_SCHEMA=Schema:
COLLECTION_TABLE_COMPOSITE_CATALOG=Catalog:
COLLECTION_TABLE_COMPOSITE_OVERRIDE_DEFAULT_JOIN_COLUMNS=Override default

DERIVED_IDENTITY_TITLE=Derived Identity
DERIVED_IDENTITY_NULL_DERIVED_IDENTITY=None
DERIVED_IDENTITY_ID_DERIVED_IDENTITY=Id
DERIVED_IDENTITY_MAPS_ID_DERIVED_IDENTITY=Maps id:
DERIVED_IDENTITY_MAPS_ID_UNSPECIFIED_VALUE=<undetermined value>

ELEMENT_COLLECTION_MAPPING_LABEL=Element Collection
ELEMENT_COLLECTION_MAPPING_LINK_LABEL=element collection
ELEMENT_COLLECTION_SECTION_TITLE=Element Collection
ABSTRACT_ELEMENT_COLLECTION_MAPPING_COMPOSITE_VALUE_SECTION_TITLE=Value
ENTITY_CACHEABLE_LABEL=Cacheable
ENTITY_CACHEABLE_WITH_DEFAULT_LABEL=Cacheable ({0})

EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_PANE_LABEL=Embedded ID is mapped by a relationship.
ID_MAPPING_MAPPED_BY_RELATIONSHIP_PANE_LABEL=ID is mapped by a relationship.

ORDERING_COMPOSITE_ORDER_COLUMN=Order column

ORPHAN_REMOVAL_COMPOSITE_ORPHAN_REMOVAL_LABEL=Orphan removal
ORPHAN_REMOVAL_COMPOSITE_ORPHAN_REMOVAL_LABEL_DEFAULT=Orphan removal ({0})

LOCK_MODE_COMPOSITE_LOCK_MODE_LABEL=Lock mode:

LOCK_MODE_COMPOSITE_READ=Read
LOCK_MODE_COMPOSITE_WRITE=Write
LOCK_MODE_COMPOSITE_OPTIMISTIC=Optimistic
LOCK_MODE_COMPOSITE_OPTIMISTIC_FORCE_INCREMENT=Optimistic Force Increment
LOCK_MODE_COMPOSITE_PESSIMISTIC_READ=Pessimistic Read
LOCK_MODE_COMPOSITE_PESSIMISTIC_WRITE=Pessimistic Write
LOCK_MODE_COMPOSITE_PESSIMISTIC_FORCE_INCREMENT=Pessimistic Force Increment
LOCK_MODE_COMPOSITE_NONE=None

TARGET_CLASS_COMPOSITE_LABEL=Target class:
