在wildfly应用服务器中更改数据库模式后,hibernate从旧数据源检索现有表,但在新数据源中创建新表。
我发布了一些hibernate源代码。注意在org.hibernate.tool.hbm2ddl.TableMetadata类构造函数参数中显示不一致的行为。
TableMetadata(ResultSet rs, DatabaseMetaData meta, boolean extras) throws SQLException {
this.catalog = rs.getString("TABLE_CAT");
this.schema = rs.getString("TABLE_SCHEM");
this.name = rs.getString("TABLE_NAME");
this.initColumns(meta);
if(extras) {
this.initForeignKeys(meta);
this.initIndexes(meta);
}
String cat = this.catalog == null?"":this.catalog + '.';
String schem = this.schema == null?"":this.schema + '.';
LOG.tableFound(cat + schem + this.name);
LOG.columns(this.columns.keySet());
if(extras) {
LOG.foreignKeys(this.foreignKeys.keySet());
LOG.indexes(this.indexes.keySet());
}
}
为什么 rs.getString(“TABLE_SCHEM”)和 meta.getConnection.getSchema()提供不同的表模式。
以及hibernate如何在没有用户名和密码信息的情况下访问我的旧架构?
怎么可能呢?