我有一个非常愚蠢的问题。
是否可以建立一个直接关系,只从子关系中拉回一个列... 示例...
@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,你可以从另一个表中获得一个Elements集合,你如何将单个值返回到该元素中?
答案 0 :(得分: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。