私は、Entity休止状態の怠惰なinitializaitionエラー、なぜ私は彼を持っていますか?
@Entity
@Table(name = "products")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@NotNull
@Column(name = "Id", unique = true)
private int id;
@NotNull
@Size(min = 5, max = 30)
@Column(name = "Name")
private String name;
@NotNull
@Column(name = "Price")
private double price;
@ManyToMany(mappedBy = "products",fetch = FetchType.LAZY)
private List<Order> orders;
多対多のフィールドはタイプをフェッチLAZYでマークされています。 しかし、私は私のProductDAOに、この単純なコードを実行すると:
public List<Product> getProducts() {
List<Product> products;
String hql = "from Product";
Session session = sessionFactory.openSession();
products = session.createQuery(hql)
.list();
session.close();
return products;
}
私は怠け者initializaitionエラーを取得します。私は休止状態に慣れていないと私は、フェッチの種類が怠惰である場合、空のコレクションを持つProductオブジェクトを取得する必要があると思った。どこが間違っていますか?
取得しているエラーメッセージは何ですか? –
'コンテンツを書くことができませんでした:ロールのコレクションを遅延して初期化できませんでした:org.training.ytaranau.model.Product.orders、プロキシを初期化できませんでした - セッションなし ' – Fairy
まあ、注文は遅れて読み込まれます。しかし、セッションは閉じられており、注文を反復しているときに製品がセッションから切り離されているため、Hibernateは遅延して注文を遅延させることはできません。 –