| Method from org.hibernate.mapping.ForeignKey Detail: |
public void addReferencedColumns(Iterator referencedColumnsIterator) {
while ( referencedColumnsIterator.hasNext() ) {
Selectable col = (Selectable) referencedColumnsIterator.next();
if ( !col.isFormula() ) addReferencedColumn( (Column) col );
}
}
|
public void alignColumns() {
if ( isReferenceToPrimaryKey() ) alignColumns(referencedTable);
}
Validates that columnspan of the foreignkey and the primarykey is the same.
Furthermore it aligns the length of the underlying tables columns. |
public List getReferencedColumns() {
return referencedColumns;
}
Returns the referenced columns if the foreignkey does not refer to the primary key |
public String getReferencedEntityName() {
return referencedEntityName;
}
|
public Table getReferencedTable() {
return referencedTable;
}
|
public boolean isCascadeDeleteEnabled() {
return cascadeDeleteEnabled;
}
|
public boolean isPhysicalConstraint() {
return referencedTable.isPhysicalTable() &&
getTable().isPhysicalTable() &&
!referencedTable.hasDenormalizedTables();
}
|
public boolean isReferenceToPrimaryKey() {
return referencedColumns.isEmpty();
}
Does this foreignkey reference the primary key of the reference table |
public void setCascadeDeleteEnabled(boolean cascadeDeleteEnabled) {
this.cascadeDeleteEnabled = cascadeDeleteEnabled;
}
|
public void setReferencedEntityName(String referencedEntityName) {
this.referencedEntityName = referencedEntityName;
}
|
public void setReferencedTable(Table referencedTable) throws MappingException {
//if( isReferenceToPrimaryKey() ) alignColumns(referencedTable); // TODO: possibly remove to allow more piecemal building of a foreignkey.
this.referencedTable = referencedTable;
}
|
public String sqlConstraintString(Dialect dialect,
String constraintName,
String defaultCatalog,
String defaultSchema) {
String[] cols = new String[ getColumnSpan() ];
String[] refcols = new String[ getColumnSpan() ];
int i=0;
Iterator refiter = null;
if(isReferenceToPrimaryKey() ) {
refiter = referencedTable.getPrimaryKey().getColumnIterator();
}
else {
refiter = referencedColumns.iterator();
}
Iterator iter = getColumnIterator();
while ( iter.hasNext() ) {
cols[i] = ( (Column) iter.next() ).getQuotedName(dialect);
refcols[i] = ( (Column) refiter.next() ).getQuotedName(dialect);
i++;
}
String result = dialect.getAddForeignKeyConstraintString(
constraintName, cols, referencedTable.getQualifiedName(dialect, defaultCatalog, defaultSchema), refcols, isReferenceToPrimaryKey()
);
return cascadeDeleteEnabled && dialect.supportsCascadeDelete() ?
result + " on delete cascade" :
result;
}
|
public String sqlDropString(Dialect dialect,
String defaultCatalog,
String defaultSchema) {
return "alter table " +
getTable().getQualifiedName(dialect, defaultCatalog, defaultSchema) +
dialect.getDropForeignKeyString() +
getName();
}
|
public String toString() {
if(!isReferenceToPrimaryKey() ) {
StringBuffer result = new StringBuffer(getClass().getName() + '(" + getTable().getName() + getColumns() );
result.append( " ref-columns:" + '(" + getReferencedColumns() );
result.append( ") as " + getName() );
return result.toString();
}
else {
return super.toString();
}
}
|