私は結果を得るためにHibernateメソッドと呼ばれるRestサービスからのコントローラを持っていますが、なぜ子コンポーネントが来なかったのか分かりません。 Junitを使ってこのメソッドを呼び出すと、動作します。デフォルト@OneToMany
ことで親は子を取得しません。hibertnate JPA
{
@Entity
public class Product implements Serializable {
private static final long serialVersionUID = -6131311050358241535L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(nullable = false)
private String name;
private String description;
@OneToMany(mappedBy = "product")
private List<Image> images = new ArrayList<Image>();
}
{
@Entity
public class Image implements Serializable {
private static final long serialVersionUID = 2128787860415180858L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@JoinColumn(name = "product_id")
@ManyToOne
private Product product;
private ImageType type;
}
{
@PersistenceContext
private EntityManager entityManager;
public List<Product> findAllWithParentProductsAndImage() {
String hpql = "select distinct p from Product p left join fetch p.images";
List<Product> resultList = entityManager.createQuery(hpql,
Product.class).getResultList();
return resultList;
}
}
あなたがlaziily子供をロードしていないことを確認するためにチェックしましたか? –
サービスの@Transaction(readOnly = true)をラップすると、遅延読み込みの子を遅延的にアクセスできるようになります。 –