1
私は変更できないレガシーデータモデルにマップするためにHibernateを使用しています。特定のクエリでは、複数のプロパティを含む結合条件を使用するHQLを構築しようとしています。私は私が達成しようとしているものを示して恐ろしく不自然な例があります。Hibernate条件付きHQL結合
は、クラスConsumer
とその2つのプロパティを考えてみましょう - タイプGadget
の両方:consumer
表はに2つの外部キーを持っていることを
@Table(name = "consumer")
class Consumer {
@Column(name = "mp3_player")
Gadget mp3Player;
@Column(name = "mobile_phone")
Gadget mobilePhone;
...
をお知らせgadget
テーブル - それは理想的ではありません - しかし、私はそれを扱う必要があります。 Consumer
「bob」がMP3プレーヤーまたは電話として使用する「iphone」という名前のGadgets
のリストを取得したいと思います。 postgresので、私は書くことができます:私はHQLでこのクエリを表現することを試みたが、JOIN句は一つだけ条件が含まれていることを要求するように見える
select gadget.*
from consumer join gadget on (
consumer.mp3_player = gadget.id or consumer.mobile_phone = gadget.id
)
where consumer.name = 'bob' and gadget.name = 'iphone';
。では、HQLで同様のクエリをどのように表現できますか?
返信ありがとうございます - 私は質問からいくつかの詳細を逃したので、今更新することを認識しています。 – teabot
それで、私は間違った質問をしていたことが判明 - 私の謝罪。質問が更新されました。 – teabot