0

データベースに 2 つのテーブルがあり、2 つのテーブルを使用して結合クエリを作成する必要があるとします。これらのテーブルの 1 つを MVC プロジェクトのエンティティ クラスとしてマップしましたが、エンティティとしての他のテーブルのマッピングはありません。hql を実行すると、その結合は機能しますか?

そうでない場合、およびマッピングが必要な場合は、それらのエンティティ間の制約 (主キー/外部キー) を指定する必要がありますか?

私のアプリケーションはテーブルからデータを読み取るだけなので、エンティティ クラスの作成に多くの時間を費やしたくありません。休止状態を使用した簡単なアプローチはありますか?

4

2 に答える 2

1

Hibernate は、セッション ファクトリにあるものだけを認識します。Hibernate が認識しないエンティティを定義していない場合は、そのエンティティを含む hql を記述することに疑問の余地はありません。

または、セッションから接続を取得してから、hql ではなくカスタム sql を実行することもできます。

プレーン SQL を使用するには、次のようなものを使用できます。

getSession().doWork(新しいワーク() {

        @Override
        public void execute(Connection connection) throws SQLException {
            // TODO Auto-generated method stub

        }
    })
于 2013-08-04T18:50:29.203 に答える
1

あなたの質問について: HQL はマップされたエンティティでのみ機能しますが、ResultTranformer でマップされていないオブジェクトを返すことができますが、あなたのケースではありません。HQL に必要な関係とプロパティのみを使用して、不要なエンティティの最小限の定義を作成できます。
解決する別の方法は、プレーンな SQL クエリを作成し、マップされたエンティティのみを返すことです。session.createSQLQuery(yourQuerySQL).addEntity(YourMappedEntity.class).

于 2013-08-04T18:50:56.617 に答える