JPA检索对象的一部分

时间:2014-02-11 08:42:49

标签: database hibernate rest jpa

在sql中,您可以轻松地从整个表中选择几列。你如何在JPA中实现这样的目标? 这实际上不是我的主要问题。它更像是一种设计。

假设我有一个包含一些信息字段的父对象和一个具有一对多连接的子对象字段集合。

@Entity
@Table(name = "code")
public class CodeList extends Code {

        /** The code list's values. */
        @OneToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
        @JoinColumn(name = "codeListId")
        private List<CodeValue> codeValues;


        /** The code list's display type. */
        @Column(length = 255, name = "DISPLAY_TYPE")
        private String displayType;
....

我正在尝试使用JPA(Hibernate)和jax-rs来实现一个休息服务,但是如果我希望我的服务只能检索CodeList(displayType)的信息或者只是检索codeValues的集合而不是额外的性能检修(归零对象)或从数据库中检索我不需要的额外数据?

2 个答案:

答案 0 :(得分:1)

使用JPQL确定要检索的值。

select e.displayType from CodeList e

OR

select e from CodeList d left join fetch d.codeValues e

答案 1 :(得分:1)

默认@OneToMany关系是LAZY。

简单值:

SELECT c.displayType FROM CodeList c WHERE c.id=:id

关系

SELECT v FROM CodeList c LEFT JOIN c.codeValues v WHERE c.id=:id