Hibernate criteria.setFetchMode(property,mode)不适用于实体中的子属性

时间:2016-11-10 23:46:14

标签: java hibernate

我定义了一个类;

release_date

当我尝试使用制造商获取ATG实体时,我设置为;

@Entity

@Table(name = "atg", uniqueConstraints = @UniqueConstraint(columnNames = "code"))
public class ATG{

    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "companyid")
    Manufacturer manufacturer;
..
}

这是有效的。意思是我得到制造商的详细信息。

我将制造商类定义为;

criteria.setFetchMode("manufacturer", FetchMode.JOIN);

我也想获取网站对象。所以,我确实喜欢,

@Entity
public class Manufacturer{

@OneToMany( mappedBy="manufacturer")
private List<Site> sites;

}

但这不起作用。也就是说,我无法获得网站列表。

在这种情况下我应该如何使用FetchMode.Join?

1 个答案:

答案 0 :(得分:0)

您可以尝试将createAlias()放入您的条件中。见样本

criteria.createAlias("manufacturer.sites","site",CriteriaSPecification.LEFT_JOIN);

criteria.setFetchMode("site", FetchMode.JOIN);