The Java™ Persistence API (JPA) specification
allows an entity's primary key to be made up of more than one column.
In this case, the primary key is referred to as a "composite" or "compound"
primary key. You need to provide an ID class, which is specified by
the @IdClass annotation, in order to manage a composite primary key.
Use the identity tool for JPA to generate an ID class for entities
that use composite primary keys.
Syntax
Before running the command, you must
have a copy of persistence.xml file on the classpath, or
specify it as a properties file through the -p [path_to_persistence.xml]
argument.
The command syntax is as follows:
wsappid [parameters][arguments]
Parameters
The wsappid tool accepts the
standard set of command-line arguments that are defined by the configuration
framework along with the following:
- -directory/-d <output_directory>:
The path to the output directory. If the directory does not match
the generated output ID class package, the package structure will
be created beneath the directory. If this parameter is not specified,
the wsappid tool will attempt to find the directory of the .java file
for the class that is capable of persistence, and the wsappid tool
uses the current directory if a .java file is not found.
- -ignoreErrors/-i <true/t | false/f>:
If this parameter is set to false, an exception is thrown if the tool
is run on any class that does not use the application identity or
is not the base class in the inheritance hierarchy.
- -token/-t <token>:
The token that is used to separate the values of stringed primary
keys in the string form of the object ID. This option can be used
only if there are multiple primary key fields. The default is "::".
- -name/-n <id_class_name>:
The name of the identity class to generate. If this option is specified,
the wsappid tool must be run on exactly one class. If the class meta-data
already names an ID class for the object, this option will be ignored.
If the name is not fully qualified, the package of the persistence
class is appended to form the fully qualified name.
- -suffix/-s <id_class_suffix>:
A string with which to suffix each persistent class name to form the
identity class name. This option is overridden by the -name/-n parameter
or by any object ID class that is specified in the meta-data.
Each additional argument to the wsappid tool must be one of the
following:
- The full name of a persistent class.
- The .java name for a persistent class.
- The .class file of a persistent class.
Usage
The identity tool used with JPA for
application server simplifies the task of creating an identity class
for entities that use composite IDs. A composite ID refers to an identity
that uses more than one field as its primary key. The entity class
must be compiled, and primary keys need to be identified in the entity
class.
Run the wsappid tool
from the command line in the app_install_root/bin/
directory. When you run this command, a new class representing the
composite ID of the entity is generated. Messages and errors are logged
to the console as specified.
Examples
Consider the following entity :
@Entity
public class Employee {
@Id
private int division;
@Id private int id;
// . . .
}
Before the entity can be used we need an ID class.
For this example, assume that the entity is found in the
src/main/java directory.
To
generate an ID class for the Employee entity run:
wsappid -s Id src/main/java/Employee.java -d src/main/java
A
new class, EmployeeId.java, is generated in the
src/main/java directory.
Additional information
You can refer to
the Application identity tool in persistence classes in the Apache
OpenJPA User's Guide.