0

注釈を使用してデータベースにマップされたいくつかのオブジェクト クラスがあり、必要な結果を得るために Hibernate クエリをまとめる方法を考える手助けが必要です。

私は休止状態 3.6.5 を使用しています。私は Criteria を使用してきましたが、動作する場合は Query などに満足しています!

私はHibernateを初めて使用します(プロパティでオブジェクトをフィルタリングするための単純な基準を管理できますが、結合はすべて新しいものです)ので、回答の説明(または推奨される読書)は素晴らしいでしょう。

RawRead には、文字列を含む tagcode フィールドがあります。Checkpoint、IncidentItem、および Guard クラスにはすべて、TagCode プロパティもあります。

TagCode が他のクラス (IncidentItem、Guard、Checkpoint) のどのタグコード値とも一致しないすべての RawRead オブジェクトを取得したいと考えています。

一種のブレイン ダンプ/疑似 SQL コード:

select raw.* from 
    RAWREADS raw, checkpoints c, GUARDS g, INCIDENTITEMS i 
    where 
    raw.tagcode != c.TAGNO
    and raw.TAGCODE != g.IDTAG
    and raw.TAGCODE != i.IDTAG;

それは効率的ではないことなどを理解しています。私の考えの単なる例です。

Hibernate 言語で何を見るべきか提案できますか?

編集/追加: RawRead オブジェクトは、Guard と Checkpoint にマップされます (checkpoint と呼ばれるプロパティと、これらのクラスのインスタンスである Guard と呼ばれるプロパティがあります - どちらも @ManyToOne です)。

IncidentItem には、他のクラスへのマッピングはありません。

4

1 に答える 1

2

HQLでオブジェクトを結合するには、アプリケーションレベルのアノテーションでオブジェクト間にマッピングされた関係が必要です。マップされた関係がない場合は、プレーンSQLでこのようなクエリを実行する必要があります。

于 2012-08-07T17:07:05.717 に答える