【发布时间】:2016-02-01 13:03:40
【问题描述】:
在尝试使用休眠从数据库中使用购买对象填充 javaFX 表视图之后。为了澄清一点,我有与多对多关系相关的购买和产品实体,我已应用此方法 [我自己的代码] (Hibernate many to many relationship with extras columns) 来映射此关系。 我收到此错误:
Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: model.Purchase.lineItems, could not initialize proxy - no Session
at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:567)
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:205)
at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:546)
at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:133)
at org.hibernate.collection.internal.PersistentSet.iterator(PersistentSet.java:163)
at java.util.AbstractCollection.addAll(AbstractCollection.java:343)
at javafx.collections.ModifiableObservableListBase.addAll(ModifiableObservableListBase.java:99)
at controller.purchase.PurchaseController.setPurchaseHeader(PurchaseController.java:254)
at controller.purchase.PurchaseController.btnEditClicked(PurchaseController.java:244)
这是我从数据库获得所有购买的代码: 请注意,我用 thoes 元素填充了一个 tableView,并且对于每个购买都有 LineItems。
public ObservableList<Purchase> findAll() {
try {
if (!session.isOpen())
session = DatabaseUtil.getSessionFactory().openSession();
session.beginTransaction();
Criteria c = session.createCriteria(Purchase.class);
c.setFetchMode("lineItems", FetchMode.JOIN);
Query query = session.createQuery(" from Purchase ");
ObservableList<Purchase> list = FXCollections.observableArrayList(query.list());
session.getTransaction().commit();
session.close();
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
【问题讨论】:
-
能否向我们展示您的采购和产品 POJO?
-
我刚刚添加了上一个问题的链接,上面的女巫包含了我所有的 POJOS
-
在尝试获取惰性部分中的对象之前是否要关闭会话?
-
尝试将@OneToMany(mappedBy = "pk.purchase", cascade = CascadeType.ALL) 更改为@OneToMany(mappedBy = "pk.purchase", cascade = CascadeType.ALL,fetch = FetchType.EAGER )
-
我得到另一个异常:org.hibernate.exception.SQLGrammarException: could not extract ResultSet at
标签: java hibernate postgresql hibernate-mapping