在JPARepository中的Findall上收集空

时间:2014-08-05 12:03:42

标签: java jpa spring-data-jpa

我有3个JPA实体。

FormattedText.java

@Entity
public class FormattedText extends BaseEntity implements Serializable {

    @OneToMany(mappedBy = "refFormattedText",cascade = CascadeType.ALL)
    private Set<FormattedText_Product> formattedText_products = new HashSet<FormattedText_Product>(0);
}

FormattedText_Product .java

@Entity
@Table(uniqueConstraints = @UniqueConstraint(columnNames = {"formattedTextType","refProduct"}))
public class FormattedText_Product extends BaseEntity{

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "refFormattedText")
    private FormattedText refFormattedText;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "refProduct")
    private Product refProduct;

    @Column(name="formattedTextType")
    private FormattedTextType formattedTextType;
}

产品.java

@Entity
public class Product extends BaseEntity{

    @OneToMany(mappedBy = "refProduct",cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    private Set<FormattedText_Product> formattedText_products = new HashSet<FormattedText_Product>(0);

}

因此,FormattedText_Product是一个连接表。

我有一个JPA存储库:

public interface FormattedTextRepository extends GenericJpaRepository<FormattedText, Integer>{

}

当我这样做时:

FormattedTextRepository formattedTextRepository;
formattedTextRepository.findAll();

我得到了所有 FormattedText ,其中 formattedText_products 集合不为空。

但是当我这样做时:

FormattedTextRepository formattedTextRepository;
List<FormattedText> list = formattedTextRepository.findAll();
list.getFormattedText_products().get(0).getRefProduct().getFormattedText_products().size();

大小为0。 但如果我这样做:

FormattedTextRepository formattedTextRepository;
List<FormattedText> list = formattedTextRepository.findAll();
FormattedText ft = list.getFormattedText_products().get(0);

entityManager.refresh(ft);

ft.getRefProduct().getFormattedText_products().size();

我得到了正确的收藏尺寸。它包含产品的formattedText_products对象。

是否可以通过findAll()方法填充 FormattedText_Product 中的产品集合?

提前Tahnks

于连

0 个答案:

没有答案