################################################################################
# Copyright (c) 2010 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
#
# The messages are used as the description of validation messages found in the
# jpa_validation.properties bundle. They are used as parameters to validation messages.
#
################################################################################

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
