在 activejdbc 中获取 table 的列顺序
Get column order of table in activejdbc
有没有办法按照它们在 activejdbc 数据库中定义的顺序获取 table 的列?我试过这个:
User u = new User(); // User extends org.javalite.activejdbc.Model
Map<String, ColumnMetadata> columns = u.getMetaModel().getColumnMetadata();
但是,返回的映射中的列按字母顺序排列,而不是 table 中定义的顺序。
如果重要的话,我正在使用 MySQL。
它使用标准 JDBC 元数据调用,请参阅此处:Registry#getColumns。
然而,这是从 JDBC driver 返回的,它被添加到代码中的 Map
。如您所知,地图不以任何方式排序。不确定为什么您需要以与数据库中定义的顺序相同的顺序获取列,或者这是否可能。
如果您真的想要这个,您可以降到数据库级别:
Connection con = Base.connection();
// get metadata from the connection any way you want
通过这种方式,您可以获得 driver 所能提供的一切(您的里程将受到 driver 实施的限制)
有没有办法按照它们在 activejdbc 数据库中定义的顺序获取 table 的列?我试过这个:
User u = new User(); // User extends org.javalite.activejdbc.Model
Map<String, ColumnMetadata> columns = u.getMetaModel().getColumnMetadata();
但是,返回的映射中的列按字母顺序排列,而不是 table 中定义的顺序。
如果重要的话,我正在使用 MySQL。
它使用标准 JDBC 元数据调用,请参阅此处:Registry#getColumns。
然而,这是从 JDBC driver 返回的,它被添加到代码中的 Map
。如您所知,地图不以任何方式排序。不确定为什么您需要以与数据库中定义的顺序相同的顺序获取列,或者这是否可能。
如果您真的想要这个,您可以降到数据库级别:
Connection con = Base.connection();
// get metadata from the connection any way you want
通过这种方式,您可以获得 driver 所能提供的一切(您的里程将受到 driver 实施的限制)