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

# JptJpaCoreValidationArgumentMessages

# These strings are used as arguments to be bound to various of the validation
# messages in the jpt_jpa_core_validation.properties bundle.

DOES_NOT_MATCH_JOIN_TABLE=does not match join table
DOES_NOT_MATCH_COLLECTION_TABLE=does not match collection table
NOT_VALID_FOR_THIS_ENTITY=is not valid for this entity

ATTRIBUTE_DESC=attribute ''{0}''
VIRTUAL_ATTRIBUTE_DESC=implied attribute ''{0}''

ON_MAPPED_SUPERCLASS=on the mapped superclass
ON_EMBEDDABLE=on the embeddable
