2012-08-30 22 views
0

我有一個非常愚蠢的問題。openJPA單列中的直接關係

是否有可能有直接的關係,只有拉回從孩子關係... 例如一列...

@Table(name="AUTH") 
public class Magazine { 

    @Column(length=9) 
    @Id private String isbn; 
    @Id private String title; 

    @OneToOne 
    @JoinColumn(name="COVER_ID" referencedColumnName="ID") 
    private string coverArticle; //<--- I want this to just have the Article Name... How can this be done 

    ... 
} 

請參閱oneToone註釋以上。我想,要只包含品名的串...

@Table(name="ART") 
public class Article { 

    @Id private long id; 

    @Id private String ArticleName; 
} 

我知道你可以有一個ElementCollection,你從其他表,你如何得到一個值回那獲得元素的集合元件?

回答

0

這可能不像您希望的那麼簡單,但您可以通過在您的實體上定義FetchGroup來完成此操作。對於你上面給的例子,你可以按如下修改:

@FetchGroups({ 
    @FetchGroup(name="coverArticleNameOnly", attributes={ 
     @FetchAttribute(name="isbn"), 
     @FetchAttribute(name="title"), 
     @FetchAttribute(name="coverArticle"), 
     ... 
    }) 
}) 
@Table(name="AUTH") 
public class Magazine { 

    @Column(length=9) 
    @Id private String isbn; 
    @Id private String title; 

    @OneToOne 
    @JoinColumn(name="COVER_ID" referencedColumnName="ID") 
    private string coverArticle; 

    ... 
} 

@FetchGroups({ 
    @FetchGroup(name="coverArticleNameOnly", attributes={ 
     @FetchAttribute(name="articleName") 
    }) 
}) 
@Table(name="ART") 
public class Article { 

    @Id private long id; 

    @Id private String ArticleName; 
} 

然後,您找回您的雜誌記錄之前,進行下面的調用:

getEntityManager().getFetchPlan().addFetchGroup("coverArticleNameOnly"); 

不幸的部分,你可以看到上面是,您需要爲您想要保留的Magazine類中的所有字段添加提取屬性到您的提取組。請參閱http://openjpa.apache.org/builds/1.0.4/apache-openjpa-1.0.4/docs/manual/ref_guide_fetch.html