我正在做一个小型的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语句应该怎么样吗?
非常感谢,
答案 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;
}