2012-02-22 6 views
0

に参加:Hibernateは、私は以下のエンティティ、DB内のテーブルにマップされた各を持って設計

キャンペーン ビジネス クライアント

キャンペーンのエンティティは、キャンペーンがために開かれた事業を保持しています。 クライアントエンティティは、それが属するビジネスを保持します。キャンペーンと同じbusiness_idを持つすべてのクライアントを検索することで、キャンペーンのクライアントを取得します(このデザインが改善されると思われます)。

キャンペーンが最後に実行されてからシステムに入力されたすべてのキャンペーンクライアントを見つけて、それらにもキャンペーンを送信する必要があります。これには最高のデザインは何でしょうか?

私はCampaignClient(特定のキャンペーンのクライアント)という新しいエンティティを作成する必要があると思いますが、これをHibernateで実装する方法はわかりません。

答えて

1
select client from campaign campaign 
inner join campaign.business business 
inner join business.clients client 
where client.creationDate > campaign.lastRunDate 

または、クライアントへのビジネスからの関連を持っていない(しかし、あなたは1を持っている必要があります)場合:Iごとのビジネス複数のキャンペーンを持っている場合、それが動作する方法

select client from campaign campaign 
inner join campaign.business business 
where client.business.id = business.id 
and client.creationDate > campaign.lastRunDate 
+0

を(ひいてはクライアントごとに複数のキャンペーンもあります)クライアントは一部のキャンペーンでは新しく、最近実行されたキャンペーンでは「古い」(既に処理済み)の可能性があります。 – Alex

+0

私のクエリには、特定のキャンペーンのすべてのクライアントを返す 'campain.id =:id'節は含まれていませんでした。複数のキャンペーンをお持ちの場合は、 'select client、campaign from ... 'を使用してください。返される各行には、クライアントとこのクライアントに送信するキャンペーンが含まれます。 –

関連する問題