Browse Source
Merge in QFX/base-third from ~ELIJAH/qfx-base-third:qufenxi to qufenxi * commit '407627bf4386296c22f80ae512612c42a4b40d7b': DEC-14578 feat: 使hibernate支持主键的自动更新release/10.0
Elijah
4 years ago
6 changed files with 143 additions and 9 deletions
@ -0,0 +1,63 @@ |
|||||||
|
package com.fr.third.org.hibernate.tool.schema.internal; |
||||||
|
|
||||||
|
import com.fr.third.org.hibernate.boot.Metadata; |
||||||
|
import com.fr.third.org.hibernate.dialect.Dialect; |
||||||
|
import com.fr.third.org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; |
||||||
|
import com.fr.third.org.hibernate.mapping.Column; |
||||||
|
import com.fr.third.org.hibernate.mapping.PrimaryKey; |
||||||
|
import com.fr.third.org.hibernate.tool.schema.spi.Exporter; |
||||||
|
|
||||||
|
import java.util.Iterator; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Elijah |
||||||
|
* @version 10.5 |
||||||
|
* Created by Elijah on 2020/9/30 |
||||||
|
*/ |
||||||
|
public class StandardPrimaryKeyExporter implements Exporter<PrimaryKey> { |
||||||
|
private Dialect dialect; |
||||||
|
|
||||||
|
public StandardPrimaryKeyExporter(Dialect dialect) { |
||||||
|
this.dialect = dialect; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String[] getSqlCreateStrings(PrimaryKey primaryKey, Metadata metadata) { |
||||||
|
final JdbcEnvironment jdbcEnvironment = metadata.getDatabase().getJdbcEnvironment(); |
||||||
|
final String tableName = jdbcEnvironment.getQualifiedObjectNameFormatter().format( |
||||||
|
primaryKey.getTable().getQualifiedTableName(), |
||||||
|
dialect |
||||||
|
); |
||||||
|
|
||||||
|
final String constraintName = dialect.quote( primaryKey.getName() ); |
||||||
|
return new String[]{ "alter table " + tableName + dialect.getAddPrimaryKeyConstraintString(constraintName) + " " + columnsToString( primaryKey ) }; |
||||||
|
} |
||||||
|
|
||||||
|
protected String columnsToString(PrimaryKey primaryKey) { |
||||||
|
final StringBuilder sb = new StringBuilder(); |
||||||
|
sb.append( " (" ); |
||||||
|
final Iterator<Column> columnIterator = primaryKey.columnIterator(); |
||||||
|
while ( columnIterator.hasNext() ) { |
||||||
|
final Column column = columnIterator.next(); |
||||||
|
sb.append( column.getQuotedName( dialect ) ); |
||||||
|
if ( columnIterator.hasNext() ) { |
||||||
|
sb.append( ", " ); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return sb.append( ')' ).toString(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String[] getSqlDropStrings(PrimaryKey primaryKey, Metadata metadata) { |
||||||
|
final JdbcEnvironment jdbcEnvironment = metadata.getDatabase().getJdbcEnvironment(); |
||||||
|
final String tableName = jdbcEnvironment.getQualifiedObjectNameFormatter().format( |
||||||
|
primaryKey.getTable().getQualifiedTableName(), |
||||||
|
dialect |
||||||
|
); |
||||||
|
final StringBuilder buf = new StringBuilder( "alter table " ); |
||||||
|
buf.append( tableName ); |
||||||
|
buf.append(dialect.getDropPrimaryKeyConstraintString(dialect.quote( primaryKey.getName()))); |
||||||
|
return new String[] { buf.toString() }; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue