0

我有一个非常愚蠢的问题。

是否有可能有一个直接关系,只从子关系中拉回一列......例如......

@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,你可以从另一个表中获取元素的集合,你如何将单个值返回到该元素中?

4

1 回答 1

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 类中的所有字段添加 fetch 属性到您的 fetch 组。

有关详细信息,请参阅http://openjpa.apache.org/builds/1.0.4/apache-openjpa-1.0.4/docs/manual/ref_guide_fetch.html

于 2012-09-19T04:32:41.990 回答