2011-12-05 9 views
0

私は以下のエンティティを持っています TaskType String id; 文字列名。 文字列の説明。休止状態の基準の内部 ...2つのエンティティの制限付きでHibernateの基準を使用し、両方からの値を返す

TaskQueue 
    String id; 
    String name; 
    ... 

TaskJBPM 
    long id; 
    String description; 
    String status; 
    String assignedToUser; 
     int Priority; 
    ... 

Task 
    String id; 
    String name; 
    long masterTaskId; // Link to TaskJBPM table 
    Date expectedStart; 
    Date expectedEnd 
    Date scheduledStart; 
    Date scheduledEnd; 
    String taskQueueId; // Link to the TaskQueue table 
    String taskTypeId;  // Link to the TaskType table 
    ... 

私は両方のタスクとTaskJBPMエンティティ から属性(例を使用して制限を設定できるようにしたいと思いオブジェクト。(Restrictions.eq(「ステータス」をcriteria.add )、 criteria.add(Restrictions.eq( "name"、 "example");)

また、TaskとTaskJBPMの両方のテーブルの属性をすべて戻したい多分TaskTypeとTaskQueueからの属性)。2つの質問。これは、休止状態の基準オブジェクトを使用して可能であり、パフォーマンスは になります。 TaskJBPMには何千ものレコードが含まれていますか?誰かが私にいくつか サンプルコードを表示できますか? ありがとう、 フレッド

答えて

0

エンティティを正しく設計する場合のみ可能です。これは、タスクの実体がmasterTaskId、taskQueueIdとtaskTypeIdが、3つ(私は仮定)ManyToOneの関連付けを持つべきではないことを意味します

@ManyToOne 
@JoinColumn(name = "MASTER_TASK_ID") 
private TaskJBPM masterTask; 

@ManyToOne 
@JoinColumn(name = "TASK_QUEUE_ID") 
private TaskQueue taskQueue; 

@ManyToOne 
@JoinColumn(name = "TASK_TYPE_ID") 
private TaskType taskType; 

あなたはその後、(createAlias()またはcreateCriteria()を使用して)結合を使用することができますについて条件クエリ内の関連付け、および予測を使用してすべてのエンティティからプロパティを取得します。

条件クエリはSQLに変換されます。そのパフォーマンスは、自分で作成したSQLクエリーより悪くはありません。