如何从hibernate中的条件查询中删除引用实体的某些字段

时间:2016-10-13 15:30:18

标签: java hibernate orm criteria hibernate-criteria

假设我们有实体A,它包含类型为B的实体列表(具有延迟初始化)。 实体B有一个BLOB字段和一些其他不包含太多数据的字段。

我如何使用hibernate条件查询获取实体A的字段和每个带有B列表的A实体,但每个B实体都没有BLOB字段?

另外,我不想提取As并迭代它们以获得Bs。 (我现在,如何使用'Projections'来提取必需字段的Bs。)

以下是一些代码示例:

A-实体:

@Entity  
@Table(name = "A")  
public class A implements Serializable {  
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    @OneToMany(mappedBy = "order", fetch = FetchType.LAZY)
    @Cascade(CascadeType.ALL)
    private List<B> list = new LinkedList<>();
}

B-实体:

@Entity  
@Table(name = "B")  
public class B implements Serializable {  
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    @Column(name = "data", nullable = false)
    @Lob
    private byte[] data;

    @ManyToOne(targetEntity = A.class, fetch = FetchType.EAGER)
    @JoinColumn(name = "A_id", nullable = false)
    private A a;
}

0 个答案:

没有答案