2013-05-15 82 views
0

我正在做一個小型的Web應用程序,使用hibernate查詢數據庫,並在接收的數據中顯示一個jsp表。爲此,我使用DML語句來檢索DB數據。Sql ddl獲取外鍵信息

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列的信息,引用的表的名稱以及引用的表中的列。

I`ve搜索了很多,但沒有發現任何相關的,你有什麼想法DDL語句應該看起來怎麼樣?

非常感謝,

回答

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; 
}