Class ForeignKey

java.lang.Object
org.apache.openjpa.jdbc.schema.Constraint
org.apache.openjpa.jdbc.schema.ForeignKey
All Implemented Interfaces:
Serializable

public class ForeignKey extends Constraint
Represents a database foreign key; may be a logical key with no database representation. This class can also represent a partial key, aligning with DatabaseMetaData.
Author:
Abe White
See Also:
  • Field Details

    • ACTION_NONE

      public static final int ACTION_NONE
      Logical foreign key; links columns, but does not perform any action when the joined primary key columns are modified.
      See Also:
    • ACTION_RESTRICT

      public static final int ACTION_RESTRICT
      Throw an exception if joined primary key columns are modified.
      See Also:
    • ACTION_CASCADE

      public static final int ACTION_CASCADE
      Cascade any modification of the joined primary key columns to this table. If the joined primary key row is deleted, the row in this table will also be deleted.
      See Also:
    • ACTION_NULL

      public static final int ACTION_NULL
      Null the local columns if the joined primary key columns are modified.
      See Also:
    • ACTION_DEFAULT

      public static final int ACTION_DEFAULT
      Set the local columns to their default values if the primary key columns are modified.
      See Also:
  • Constructor Details

    • ForeignKey

      public ForeignKey()
      Default constructor.
    • ForeignKey

      @Deprecated public ForeignKey(String name, Table table)
      Deprecated.
      Constructor.
      Parameters:
      name - the foreign key name, if any
      table - the local table of the foreign key
    • ForeignKey

      public ForeignKey(DBIdentifier name, Table table)
  • Method Details

    • getAction

      public static int getAction(String name)
      Return the foreign key action constant for the given action name.
    • getActionName

      public static String getActionName(int action)
      Return the foreign key action name for the given action constant.
    • isLogical

      public boolean isLogical()
      Description copied from class: Constraint
      Return whether this constraint is a logical constraint only; i.e. if it does not exist in the database.
      Specified by:
      isLogical in class Constraint
    • isPrimaryKeyAutoAssigned

      public boolean isPrimaryKeyAutoAssigned()
      Whether the primary key columns of this key are auto-incrementing, or whether they themselves are members of a foreign key who's primary key is auto-incrementing (recursing to arbitrary depth).
    • getPrimaryKeyTableName

      @Deprecated public String getPrimaryKeyTableName()
      Deprecated.
      The name of the primary key table.
    • getPrimaryKeyTableIdentifier

      public DBIdentifier getPrimaryKeyTableIdentifier()
    • setPrimaryKeyTableName

      @Deprecated public void setPrimaryKeyTableName(String pkTableName)
      Deprecated.
      The name of the primary key table. You can only set the primary key table name on foreign keys that have not already been joined.
    • setPrimaryKeyTableIdentifier

      public void setPrimaryKeyTableIdentifier(DBIdentifier pkTableName)
    • getPrimaryKeySchemaName

      @Deprecated public String getPrimaryKeySchemaName()
      Deprecated.
      The name of the primary key table's schema.
    • getPrimaryKeySchemaIdentifier

      public DBIdentifier getPrimaryKeySchemaIdentifier()
    • setPrimaryKeySchemaName

      @Deprecated public void setPrimaryKeySchemaName(String pkSchemaName)
      Deprecated.
      The name of the primary key table's schema. You can only set the primary key schema name on foreign keys that have not already been joined.
    • setPrimaryKeySchemaIdentifier

      public void setPrimaryKeySchemaIdentifier(DBIdentifier pkSchemaName)
    • getPrimaryKeyColumnName

      @Deprecated public String getPrimaryKeyColumnName()
      Deprecated.
      The name of the primary key column.
    • getPrimaryKeyColumnIdentifier

      public DBIdentifier getPrimaryKeyColumnIdentifier()
    • setPrimaryKeyColumnName

      @Deprecated public void setPrimaryKeyColumnName(String pkColumnName)
      Deprecated.
      The name of the primary key column. You can only set the primary key column name on foreign keys that have not already been joined.
    • setPrimaryKeyColumnIdentifier

      public void setPrimaryKeyColumnIdentifier(DBIdentifier pkColumnName)
    • getKeySequence

      public int getKeySequence()
      The sequence of this join in the foreign key.
    • setKeySequence

      public void setKeySequence(int seq)
      The sequence of this join in the foreign key.
    • getDeleteAction

      public int getDeleteAction()
      Return the delete action for the key. Will be one of: ACTION_NONE, ACTION_RESTRICT, ACTION_CASCADE, ACTION_NULL, ACTION_DEFAULT.
    • setDeleteAction

      public void setDeleteAction(int action)
      Set the delete action for the key. Must be one of: ACTION_NONE, ACTION_RESTRICT, ACTION_CASCADE, ACTION_NULL, ACTION_DEFAULT.
    • getUpdateAction

      public int getUpdateAction()
      Return the update action for the key. Will be one of: ACTION_NONE, ACTION_RESTRICT, ACTION_CASCADE, ACTION_NULL, ACTION_DEFAULT.
    • setUpdateAction

      public void setUpdateAction(int action)
      Set the update action for the key. Must be one of: ACTION_NONE, ACTION_RESTRICT, ACTION_CASCADE, ACTION_NULL, ACTION_DEFAULT.
    • getIndex

      public int getIndex()
      Return the foreign key's 0-based index in the owning table.
    • getPrimaryKeyColumn

      public Column getPrimaryKeyColumn(Column local)
      Return the primary key column joined to the given local column.
    • getColumn

      public Column getColumn(Column pk)
      Return the local column joined to the given primary key column.
    • getConstant

      public Object getConstant(Column local)
      Return the constant value assigned to the given local column.
    • getPrimaryKeyConstant

      public Object getPrimaryKeyConstant(Column pk)
      Return the constant value assigned to the given primary key column.
    • getColumns

      public Column[] getColumns()
      Return the local columns in the foreign key local table order.
    • getConstants

      public Object[] getConstants()
      Return the constant values assigned to the local columns returned by getConstantColumns().
    • getPrimaryKeyConstants

      public Object[] getPrimaryKeyConstants()
      Return the constant values assigned to the primary key columns returned by getConstantPrimaryKeyColumns().
    • containsColumn

      public boolean containsColumn(Column col)
      Return true if the fk includes the given local column.
    • containsPrimaryKeyColumn

      public boolean containsPrimaryKeyColumn(Column col)
      Return true if the fk includes the given primary key column.
    • containsConstantColumn

      public boolean containsConstantColumn(Column col)
      Return true if the fk includes the given local column.
    • containsConstantPrimaryKeyColumn

      public boolean containsConstantPrimaryKeyColumn(Column col)
      Return true if the fk includes the given primary key column.
    • getPrimaryKeyColumns

      public Column[] getPrimaryKeyColumns()
      Return the foreign columns in the foreign key, in join-order with the result of getColumns().
    • getConstantColumns

      public Column[] getConstantColumns()
      Return the local columns that we link to using constant values.
    • getConstantPrimaryKeyColumns

      public Column[] getConstantPrimaryKeyColumns()
      Return the primary key columns that we link to using constant values.
    • setJoins

      public void setJoins(Column[] cols, Column[] pkCols)
      Set the foreign key's joins.
    • setConstantJoins

      public void setConstantJoins(Object[] consts, Column[] pkCols)
      Set the foreign key's constant joins.
    • setConstantJoins

      public void setConstantJoins(Column[] cols, Object[] consts)
      Set the foreign key's constant joins.
    • join

      public void join(Column local, Column toPK)
      Join a local column to a primary key column of another table.
    • joinConstant

      public void joinConstant(Object val, Column toPK)
      Join a constant value to a primary key column of another table. The constant must be either a string or a number.
    • joinConstant

      public void joinConstant(Column col, Object val)
      Join a constant value to a local column of this table. The constant must be either a string or a number.
    • removeJoin

      public boolean removeJoin(Column col)
      Remove any joins inolving the given column.
      Returns:
      true if the join was removed, false if not part of the key
    • getPrimaryKeyTable

      public Table getPrimaryKeyTable()
      Returns the table this foreign key is linking to, if it is known yet.
    • refColumns

      public void refColumns()
      Ref all columns in this key.
    • derefColumns

      public void derefColumns()
      Deref all columns in this key.
    • equalsForeignKey

      public boolean equalsForeignKey(ForeignKey fk)
      Foreign keys are equal if the satisfy the equality constraints of Constraint and they have the same local and primary key columns and action.
    • columnsMatch

      public boolean columnsMatch(Column[] fkCols, Column[] fkPKCols)
      Return true if the given local and foreign columns match those on this key. This can be used to find foreign keys given only column linking information.
    • hasNotNullColumns

      public boolean hasNotNullColumns()
      Checks for non-nullable local columns.
    • loadNameFromDB

      @Deprecated public String loadNameFromDB(DBDictionary dbdict, Connection conn)
      Deprecated.
      Return the name of the foreignkey constraint as defined in the database.
    • loadIdentifierFromDB

      public DBIdentifier loadIdentifierFromDB(DBDictionary dbdict, Connection conn)
    • addColumn

      public void addColumn(ForeignKey fk)
      Joins the column of a single column FK to this FK.
      Parameters:
      fk -
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Constraint
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Constraint
    • getRefCount

      public int getRefCount()
    • ref

      public void ref()
    • deref

      public void deref()