# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.  

failed: Failed:
nested: Nested:
null-oid: Null id value encountered while creating datastore identity for "{0}".
unknown-oid: While creating datastore identity for "{0}", unknown id value \
	"{1}" of type "{2}" encountered.  Cannot convert to \
    org.apache.openjpa.util.Id.
bad-ser-oid: Encountered object id "{0}" in serialized data, but the \
	corresponding persistent object no longer exists.  Substituting null into \
	the deserialization stream. 
transfer-lrs: You cannot transfer large result set fields from one object or \
	field to another.
invalid-key: An invalid key was found in a CacheMap while flushing data from \
	it.  CacheMap: "{0}".  Key: "{1}".  All unpinned objects were cleared from \
	the CacheMap in order to re-establish a consistent cache.
lock-failed: Unable to obtain an object lock on "{0}".
lock-timeout: Could not obtain a lock on object "{0}" in {1} milliseconds.
not-found: The instance "{0}" does not exist in the data store.
obj-exists: The instance "{0}" cannot be persisted, because it conflicts with \
	an existing instance.
not-found-multi: The following instances do not exist in the data store: {0}
opt-lock: An optimistic lock violation was detected when flushing object \
	instance "{0}" to the data store.  This indicates that the \
	object was concurrently modified in another transaction.
opt-lock-multi: Optimistic locking errors were detected when flushing to the \
	data store.  The following objects may have been concurrently modified in \
	another transaction: {0}
opt-lock-nested: Optimistic locking errors were detected when \
	flushing to the data store.  This indicates that some objects were \
	concurrently modified in another transaction.  Each exception in \
	the nested Throwables array contains a failed object representing \
	a concurrently modified object.
bad-array: Unable to copy array: {0}.
no-proxy-final: Unable to create a second class object proxy for final class \
    "{0}".
no-proxy-intf: Unable to create a second class object proxy for interface \
    "{0}".  No corresponding concrete types are known.
no-proxy-abstract: Unable to create a second class object proxy for abstract \
    type "{0}".  You must use a concrete type or a recognized interface.
cant-newinstance: Unable to instantiate proxy for type "{0}".  Make sure the \
    class has a default constructor.
no-date-cons: Custom date type "{0}" needs a default constructor or a \
    millisecond constructor.
bad-elem-type: The given element does not meet the requirements for this \
	field. The container requires that all non-null objects are of the type \
	declared in the XML metadata for this container. \
	"{1}(loader={0}).isAssignableFrom ({3}(loader={2}))" failed.
string-id: Unable to create a valid id from string "{0}".
bad-single-id: Invalid single identity declaration for type "{0}". Only \
	a single field can be declared for single field identity.
not-single: The given type "{0}" does not use single field identity.
bad-pk: Bad single primary key field "{0}"
dup-oid: A duplicate object id exception has occurred.  Each object you \
	insert into the data store must have unique primary key field values.  
unique: A unique constraint violation has occurred. 
ref-integrity: A referential integrity constraint has occurred.
no-store-exts: No store-specific facade found matching "{0}".  Using default.
objectid-abstract: Cannot create new application identity instance for \
	abstract class "{0}".
