org.eclipse.jpt.db
Interface ForeignKey

All Superinterfaces:
java.lang.Comparable<ForeignKey>, DatabaseObject

public interface ForeignKey
extends DatabaseObject, java.lang.Comparable<ForeignKey>

Database foreign key Provisional API: This interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves. This interface is not intended to be implemented by clients.


Nested Class Summary
static interface ForeignKey.ColumnPair
          Pair up the foreign key's column pairs, matching each "base" column with the appropriate "referenced" column.
 
Method Summary
 java.util.Iterator<Column> baseColumns()
          Return the foreign key's "base" columns.
 java.util.Iterator<ForeignKey.ColumnPair> columnPairs()
          Return the foreign key's column pairs.
 int columnPairsSize()
          Return the size of the foreign key's column pairs.
 java.lang.String getAttributeName()
          Return an appropriate name for an attribute that holds the entity mapped to the foreign key's "referenced" table.
 Table getBaseTable()
          Return the foreign key's "base" table.
 ForeignKey.ColumnPair getColumnPair()
          Return the foreign key's single column pair.
 java.lang.String getDefaultAttributeName()
          If the name of the "base" column adheres to the JPA spec for a default mapping (i.e.
 java.lang.String getJoinColumnAnnotationIdentifier(java.lang.String attributeName)
          Given the name of an attribute (field or property) that is mapped to the foreign key, build and return a string to be used as the value for the attribute's JoinColumn annotation's 'name' element.
 Table getReferencedTable()
          Return the foreign key's "referenced" table.
 java.util.Iterator<Column> nonPrimaryKeyBaseColumns()
          Return the foreign key's "base" columns that are not part of the base table's primary key.
 java.util.Iterator<Column> referencedColumns()
          Return the foreign key's "referenced" columns.
 boolean referencesSingleColumnPrimaryKey()
          Return whether the foreign key references the primary key of the "referenced" table and that primary key has only a single column.
 
Methods inherited from interface org.eclipse.jpt.db.DatabaseObject
getConnectionProfile, getDatabase, getIdentifier, getIdentifier, getName
 
Methods inherited from interface java.lang.Comparable
compareTo
 

Method Detail

getBaseTable

Table getBaseTable()
Return the foreign key's "base" table.


getReferencedTable

Table getReferencedTable()
Return the foreign key's "referenced" table.


columnPairs

java.util.Iterator<ForeignKey.ColumnPair> columnPairs()
Return the foreign key's column pairs.


columnPairsSize

int columnPairsSize()
Return the size of the foreign key's column pairs.


getColumnPair

ForeignKey.ColumnPair getColumnPair()
Return the foreign key's single column pair. Throw an IllegalStateException if the foreign key has more than one column pair.


baseColumns

java.util.Iterator<Column> baseColumns()
Return the foreign key's "base" columns.


nonPrimaryKeyBaseColumns

java.util.Iterator<Column> nonPrimaryKeyBaseColumns()
Return the foreign key's "base" columns that are not part of the base table's primary key. (The non-primary key base columns are not used to generate basic attributes during entity generation.)


referencedColumns

java.util.Iterator<Column> referencedColumns()
Return the foreign key's "referenced" columns.


referencesSingleColumnPrimaryKey

boolean referencesSingleColumnPrimaryKey()
Return whether the foreign key references the primary key of the "referenced" table and that primary key has only a single column. This can be used when determining JPA defaults.


getAttributeName

java.lang.String getAttributeName()
Return an appropriate name for an attribute that holds the entity mapped to the foreign key's "referenced" table.


getDefaultAttributeName

java.lang.String getDefaultAttributeName()
If the name of the "base" column adheres to the JPA spec for a default mapping (i.e. it ends with an underscore followed by the name of the "referenced" column, and the "referenced" column is the single primary key column of the "referenced" table), return the corresponding default attribute name: ForeignKey(EMP.CUBICLE_ID => CUBICLE.ID) => "CUBICLE" Return a null if it does not adhere to the JPA spec: ForeignKey(EMP.CUBICLE_ID => CUBICLE.CUBICLE_ID) => null ForeignKey(EMP.CUBICLE => CUBICLE.ID) => null


getJoinColumnAnnotationIdentifier

java.lang.String getJoinColumnAnnotationIdentifier(java.lang.String attributeName)
Given the name of an attribute (field or property) that is mapped to the foreign key, build and return a string to be used as the value for the attribute's JoinColumn annotation's 'name' element. Return null if the attribute maps to the join column by default. Precondition: The foreign key consists of a single column pair whose referenced column is the single-column primary key of the foreign key's referenced table.