0

私は、休止状態を使用してデータベースにクエリを実行し、受信したデータを含むテーブルをjspに表示する小さなWebアプリケーションを実行しています。このために、DB データを取得する DML ステートメントを使用しています。

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

問題は、FK 列を持つテーブルがある場合です。私が必要としているのは..私が理解しているように、テーブル内のFK列に関する情報、情報の意味.. FK列、参照する場合のテーブルの名前、および参照するテーブルの列に関する情報を取得するSQL DDLステートメントです。

私はたくさん検索しましたが、関連するものは何も見つかりませんでした.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 に答える