【问题标题】:Get column order of table in activejdbc获取activejdbc中表的列顺序
【发布时间】:2018-07-16 22:01:03
【问题描述】:

有没有办法按照它们在 activejdbc 中的数据库中定义的顺序来获取表的列?我试过这个:

    User u = new User(); // User extends org.javalite.activejdbc.Model
    Map<String, ColumnMetadata> columns = u.getMetaModel().getColumnMetadata();

但是,返回的地图的列按字母顺序排列,而不是表中定义的顺序。

如果这很重要,我正在使用 MySQL。

【问题讨论】:

    标签: mysql activejdbc


    【解决方案1】:

    它使用标准 JDBC 元数据调用,请参见此处:Registry#getColumns

    然而,这是从 JDBC 驱动程序返回的,它被添加到代码中的 Map 中。如您所知,地图没有以任何方式排序。不知道为什么您需要以与数据库中定义的顺序相同的顺序获取列,或者这是否可能。

    如果你真的想要这个,你可以降到数据库级别:

    Connection con = Base.connection(); 
    // get metadata from the connection any way you want
    

    这样,您可以获得驱动程序可以提供的任何内容(您的里程将受到驱动程序实施的限制)

    【讨论】:

    • 谢谢。我关心列顺序,因为我正在尝试构建网页以在表上执行 CRUD 操作(类似于 Ruby on Rails 中的脚手架)。我希望页面上的表单以与表格中的列相同的顺序列出字段。
    • 我不知道一个事实,但驱动程序/数据库可能会或可能不会返回与定义相同的顺序。我希望解决方案对您有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多