0

我正在做一个小型 Web 应用程序,它使用 hibernate 查询数据库并在 jsp 中显示一个包含接收到的数据的表。为此,我使用 DML 语句来检索数据库数据。

Session session = sessionFactory.getCurrentSession();
    Query query = session.createSQLQuery(sqlQuery);
    query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
    List<Map<String, Object>> resultSetList = query.list();

问题是当我有一个包含 FK 列的表时。我需要..据我所知,是一个 SQL DDL 语句,它检索有关表中 FK 列的信息,信息含义.. FK 列,如果引用的表的名称,以及它所引用的表中的列。

我搜索了很多,但没有发现任何相关内容,您知道 ddl 语句应该是什么样子吗?

非常感谢,

4

1 回答 1

0

这对我有用!

 public Map<String, List<String>> getFKColumns(Session session, String tableName) {

    Map<String, List<String>> fkMap = new HashMap<String, List<String>>();

    try {
        Connection connection = session.connection();
        DatabaseMetaData meta = connection.getMetaData();
        ResultSet rs = meta.getImportedKeys(connection.getCatalog(), null, tableName);

        while (rs.next()) {

            List<String> fkValues = new ArrayList<String>();
            fkValues.add(rs.getString("PKTABLE_NAME"));
            fkValues.add(rs.getString("PKCOLUMN_NAME"));

            fkMap.put(rs.getString("FKCOLUMN_NAME"), fkValues);
        }

    } catch (HibernateException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return fkMap;
}
于 2013-05-21T08:58:53.510 回答