List of usage examples for org.hibernate.mapping ForeignKey setReferencedTable
public void setReferencedTable(Table referencedTable) throws MappingException
From source file:com.zutubi.pulse.master.hibernate.SchemaRefactor.java
License:Apache License
private void transferForeignKeys(Connection connection, Table fromTable, Table toTable) throws SQLException { DatabaseMetadata meta = new DatabaseMetadata(connection, dialect); Iterator i = config.getTableMappings(); while (i.hasNext()) { Table t = (Table) i.next();/* w ww. j a va2 s .c o m*/ Iterator fki = t.getForeignKeyIterator(); while (fki.hasNext()) { ForeignKey fk = (ForeignKey) fki.next(); Table referencedTable = fk.getReferencedTable(); if (referencedTable != null && referencedTable == fromTable) { TableMetadata tableInfo = meta.getTableMetadata(t.getName(), defaultSchema, defaultCatalog, false); // verify that the fk is actually in the database. if (tableInfo.getForeignKeyMetadata(fk.getName()) == null) { // foreign key does not exist, so do not drop or recreate it. continue; } String sql = fk.sqlDropString(dialect, defaultCatalog, defaultSchema); LOG.info(sql); JDBCUtils.execute(connection, sql); fk.setReferencedTable(toTable); sql = fk.sqlCreateString(dialect, null, defaultCatalog, defaultSchema); LOG.info(sql); JDBCUtils.execute(connection, sql); } } } }
From source file:net.lshift.hibernate.migrations.AlterTableBuilder.java
License:Apache License
public AlterTableBuilder addForeignKey(String name, String[] columnNames, String referencedTable, String[] referencedColumns) { ForeignKey fk = new ForeignKey(); fk.setName(name);//from www . j ava 2 s . c o m for (String col : columnNames) fk.addColumn(new Column(col)); fk.setTable(new Table(table)); PrimaryKey refPrimaryKey = new PrimaryKey(); for (String col : referencedColumns) refPrimaryKey.addColumn(new Column(col)); Table refTable = new Table(referencedTable); refTable.setPrimaryKey(refPrimaryKey); fk.setReferencedTable(refTable); String defaultCatalog = config.getProperties().getProperty(Environment.DEFAULT_CATALOG); String defaultSchema = config.getProperties().getProperty(Environment.DEFAULT_SCHEMA); // fk.sqlConstraintString appears to generate incorrect SQL against MySQL in some instances. // The referenced columns are not always correctly listed. // alterFragments.add(" add index " + fk.getName() + " (" + StringHelper.join(", ", columnNames) + // "), add constraint " + fk.getName() + " foreign key (" + StringHelper.join(", ", columnNames) + // " references " + referencedTable + " (" + StringHelper.join(", ", referencedColumns) + ")"); alterFragments.add(fk.sqlConstraintString(dialect, fk.getName(), defaultCatalog, defaultSchema)); return this; }