sql ddl获取外键信息

时间:2013-05-15 09:13:38

标签: java sql hibernate ddl

我正在做一个小型的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语句应该怎么样吗?

非常感谢,

1 个答案:

答案 0 :(得分: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;
}