2010-07-26 71 views
0

加入我有3個表:如何獲得現場通過第三個表在JPA

對象OBJECT_IDFIELD_NAME

object_formOBJECT_IDform_id

and object_fieldsform_idfield_desc

所以我可以得到所有的FIELD_NAMES對象,但我需要得到field_desc。在SQL中,它會是這樣的:

select o.object_id, f.field_desc 
from object o, object_form of, object_fields f 
where o.object_id = of.object_id 
and of.form_id = f.form_id 

我該怎麼做在JPA?

+1

由於這個問題是關於JPA,它將真正幫助描述您的對象模型。你需要停止思考表格並開始思考對象。請提供您的對象模型(和映射)。 – 2010-07-26 19:35:58

回答

0

也許使用單向一對多關係映射。

希望這會有所幫助。 RG

@Entity 
@Table(name="OBJECT") 
public class MyObject 
{ 
    @Id 
    @Column(name="OBJECT_ID") 
    private int id; 

    @Column(name="FIELD_NAME") 
    private String fieldName; 

    @OneToMany 
    @JoinTable(name="OBJECT_FORM", 
     [email protected](name="OBJECT_ID"), 
     [email protected](name="FORM_ID")) 
    private Collection<MyObjectField> objectFields; 

    ... 
} 

@Entity 
@Table(name="OBJECT_FIELDS") 
public class MyObjectField 
{ 
    @Id 
    @Column(name="FORM_ID") 
    private int id; 

    @Column(name="FIELD_DESC") 
    private String fieldDescription; 

    ... 
} 
0

這是稍有反直覺的,但是這可能是最好的映射使用@ManyToMany映射。

考慮到您的表格結構適用於給定的form_id與多個object_id相關聯的情況,反之亦然。即使你的商業邏輯禁止這一點,這也是這種關係的典範。

檢查出this articlethis code sample關於如何做到這一點。由於您沒有告訴我們關於您的班級模型的任何內容,因此很難舉出具體的例子。