###############################################################################
# Copyright (c) 2006 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
############################################################################### 

PersistentTypePage_EntityLabel=Entity
PersistentTypePage_EmbeddableLabel=Embeddable
PersistentTypePage_MappedSuperclassLabel=Mapped Superclass

PersistentAttributePage_BasicLabel=Basic
PersistentAttributePage_IdLabel=Id
PersistentAttributePage_OneToManyLabel=One to Many
PersistentAttributePage_ManyToOneLabel=Many to One
PersistentAttributePage_ManyToManyLabel=Many to Many
PersistentAttributePage_TransientLabel=Transient
PersistentAttributePage_VersionLabel=Version
PersistentAttributePage_EmbeddedLabel=Embedded
PersistentAttributePage_EmbeddedIdLabel=Embedded Id
PersistentAttributePage_OneToOneLabel=One to One

EntityComposite_tableDefault=Default ({0})
EntityComposite_tableNoDefaultSpecified=Default ()
EntityComposite_inheritance=Inheritance

EntityGeneralSection_nameDefaultWithOneParam=Default ({0})
EntityGeneralSection_nameDefaultEmpty=Default ()
EntityGeneralSection_name=Name:

BasicGeneralSection_name=Name:
BasicGeneralSection_nameDefault=Default ({0})
BasicGeneralSection_fetchLabel=Fetch:
BasicGeneralSection_optionalLabel=Optional:
BasicGeneralSection_lobLabel=Lob
BasicGeneralSection_temporalLabel=Temporal:
BasicGeneralSection_enumeratedLabel=Enumerated:

TableChooser_label=Table:
CatalogChooser_label=Catalog:
SchemaChooser_label=Schema:
TableComposite_defaultEmpty=Default ()
TableComposite_defaultWithOneParam=Default ({0})

ColumnChooser_label=Column:
ColumnTableChooser_label=Table:

TargetEntityChooser_label=Target Entity:
TargetEntityChooser_defaultEmpty=Default ()
TargetEntityChooser_defaultWithOneParam=Default ({0})
TargetEntityChooser_browse=Browse...

NonOwningMapping_mappedByLabel=Mapped By:

JoinTableComposite_add=Add...
JoinTableComposite_defaultEmpty=Default()
JoinTableComposite_defaultWithOneParam=Default ({0})
JoinTableComposite_edit=Edit...
JoinTableComposite_inverseJoinColumn=Inverse Join Columns

JoinTableComposite_mappingBetweenTwoParamsDefault=Default ({0} -> {1})
JoinTableComposite_mappingBetweenTwoParamsFirstDefault=Default ({0}) -> {1}
JoinTableComposite_mappingBetweenTwoParamsSecDefault={0} -> Default ({1})
JoinTableComposite_mappingBetweenTwoParamsBothDefault=Default ({0}) -> Default ({1})
JoinTableComposite_mappingBetweenTwoParams={0} -> {1}
JoinTableComposite_joinColumn=Join Columns
JoinTableComposite_name=Name:
JoinTableComposite_remove=Remove
JoinTableComposite_overrideDefaultJoinColumns=Override Default
JoinTableComposite_overrideDefaultInverseJoinColumns=Override Default

InverseJoinColumnDialog_editInverseJoinColumn=Edit Inverse Join Column
InverseJoinColumnDialog_defaultWithOneParam=Default ({0})

JoinColumnDialog_editJoinColumn=Edit Join Column
JoinColumnDialog_name=Name:
JoinColumnDialog_referencedColumnName=Referenced Column Name:
JoinColumnDialog_defaultWithOneParam=Default ({0})
JoinColumnDialog_insertable=Insertable:
JoinColumnDialog_updatable=Updatable:

MultiRelationshipMappingComposite_general=General
MultiRelationshipMappingComposite_joinTable=Join Table
MultiRelationshipMappingComposite_targetEntity=Target Entity:
MultiRelationshipMappingComposite_cascadeType=Cascade Type:
MultiRelationshipMappingComposite_fetchType=Fetch Type:
MultiRelationshipMappingComposite_mappedBy=Mapped By:

ColumnComposite_defaultWithOneParam=Default ({0})
ColumnComposite_defaultEmpty=Default ()

JoinColumnComposite_joinColumn=Join Columns
JoinColumnComposite_defaultEmpty=Default()
JoinColumnComposite_name=Name:
JoinColumnComposite_defaultWithOneParam=Default ({0})
JoinColumnComposite_add=Add...
JoinColumnComposite_edit=Edit...
JoinColumnComposite_mappingBetweenTwoParams={0} -> {1}
JoinColumnComposite_mappingBetweenTwoParamsDefault=Default ({0} -> {1})
JoinColumnComposite_mappingBetweenTwoParamsBothDefault=Default ({0}) -> Default ({1})
JoinColumnComposite_mappingBetweenTwoParamsFirstDefault=Default ({0}) -> {1}
JoinColumnComposite_mappingBetweenTwoParamsSecDefault={0} -> Default ({1})
JoinColumnComposite_remove=Remove
JoinColumnComposite_overrideDefaultJoinColumns=Override Default

PrimaryKeyJoinColumnsComposite_overrideDefaultPrimaryKeyJoinColumns=Override Default
PrimaryKeyJoinColumnsComposite_add=Add...
PrimaryKeyJoinColumnsComposite_edit=Edit...
PrimaryKeyJoinColumnsComposite_remove=Remove
PrimaryKeyJoinColumnsComposite_defaultEmpty=Default()
PrimaryKeyJoinColumnsComposite_defaultWithOneParam=Default ({0})
PrimaryKeyJoinColumnsComposite_primaryKeyJoinColumn=Primary Key Join Columns
PrimaryKeyJoinColumnsComposite_mappingBetweenTwoParams={0} -> {1}
PrimaryKeyJoinColumnsComposite_mappingBetweenTwoParamsDefault=Default ({0} -> {1})
PrimaryKeyJoinColumnsComposite_mappingBetweenTwoParamsBothDefault=Default ({0}) -> Default ({1})
PrimaryKeyJoinColumnsComposite_mappingBetweenTwoParamsFirstDefault=Default ({0}) -> {1}
PrimaryKeyJoinColumnsComposite_mappingBetweenTwoParamsSecDefault={0} -> Default ({1})

AttributeOverridesComposite_attributeOverrides=Attribute Overrides:
AttributeOverridesComposite_overridDefault=Override Default

InheritanceComposite_strategy=Strategy:
InheritanceComposite_discriminatorValue=Discriminator Value:
InheritanceComposite_discriminatorValueDefaultWithOneParam=Default ({0})

DiscriminatorColumnComposite_column=Discriminator Column:
DiscriminatorColumnComposite_discriminatorType=Discriminator Type:
DiscriminatorColumnComposite_defaultEmpty=Default(<provider-specific>)

IdMappingComposite_pk_generation=PK Generation
IdMappingComposite_primaryKeyGeneration=Primary Key Generation
IdMappingComposite_tableGenerator=Table Generator
IdMappingComposite_sequenceGenerator=Sequence Generator

GeneratedValueComposite_generatedValue=Generated Value
GeneratedValueComposite_generatorName=Generator Name:
GeneratedValueComposite_strategy=Strategy:

SequenceGeneratorComposite_sequenceGenerator=Sequence Generator
SequenceGeneratorComposite_name=Name:
SequenceGeneratorComposite_sequence=Sequence:
SequenceGeneratorComposite_default=Default

TableGeneratorComposite_name=Name:
TableGeneratorComposite_table=Table:
TableGeneratorComposite_tableGenerator=Table Generator
TableGeneratorComposite_pkColumn=Primary Key Column:
TableGeneratorComposite_valueColumn=Value Column:
TableGeneratorComposite_pkColumnValue=Primary Key Column Value:
TableGeneratorComposite_default=Default

OrderByComposite_orderByGroup=Order By
OrderByComposite_orderByLabel=Order By:
OrderByComposite_noOrdering=No Ordering
OrderByComposite_primaryKeyOrdering=Primary Key Ordering
OrderByComposite_customOrdering=Custom Ordering

