public List<ChiefEditor> qbcByLikeName(final String preName) throws Exception {
List retVal = (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria c = session.createCriteria(getEntityClazz());
c.add(Restrictions.like(NAME,preName,MatchMode.START));
List<ChiefEditor> list=c.list();
for (ChiefEditor ce : list) {
//即使lazy=true,通过强制关联也可以获得多方的数据
Hibernate.initialize(ce.getBooks());
}
return list;
}
});
return retVal;
}
分享到:
相关推荐
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:225) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService...
3. **Hibernate的Hibernate.initialize()方法**:在需要使用懒加载属性的地方,手动调用此方法初始化代理对象。但这需要在业务代码中显式处理,不够优雅。 4. **使用Hibernate的Criteria API或HQL查询**:在查询时...
解决方案:理解并合理使用Open Session in View(OSIV)模式,或者在查询时显式调用`Hibernate.initialize()`方法。另外,可以考虑将懒加载改为急加载(Eager Fetching)。 六、HQL查询错误 错误表现:执行HQL语句...
避免这个问题的方法是在访问懒加载属性之前确保Session仍然打开,或者显式地在需要时加载属性,如使用`Hibernate.initialize()`方法。 ### 5. MappingException - **MappingException: Error reading resource**:...
在 Web 应用中,为了初始化对象关系,可能需要使用 Hibernate 的 `initialize()` 方法,如 `Hibernate.initialize(student.getFriends())` 来加载关联的对象。此外,`<property name="show_sql">true</property>` ...
如果在实体类中启用了懒加载,可以通过`Hibernate.initialize()`或`Criteria`查询来获取关联数据。 3. 删除关联 删除关联需要先从双方的集合中移除相关对象,然后更新这两个实体。例如,删除一个学生与课程的关联:...
- 如果采用了延迟加载机制但希望在某些情况下实现非延迟加载,可以通过`Hibernate.initialize()`方法强制加载关联对象。 #### 十一、对象持久化操作 - 对于`save`操作,如果对象已经与`Session`关联,则无需额外...
如果需要立即加载对象,可以使用`Hibernate.initialize()`方法。 在映射文件中,我们需要为Java类型指定对应的Hibernate类型,例如: - 基本类型及其封装类:整数、浮点数、字符型、布尔型等。 - 字符串:使用`...
源码中,`FetchMode`和`Hibernate.initialize()`等相关实现展示了这些优化技术的细节。 9. **事件监听器** Hibernate支持事件驱动的编程模式,如`PreLoadEventListener`、`PostInsertEventListener`等。源码中,`...
最后,文档通过“Employee----Department”关系的说明,演示了Hibernate如何处理对象之间的关联映射,包括如何通过Hibernate.initialize()方法初始化代理对象的关联属性。这是一个重要知识点,它解决了在懒加载中...
3. 在需要访问懒加载属性时,确保在Session内进行操作,或者使用`Hibernate.initialize()`手动初始化。 至于“工具”标签,这可能指的是使用特定的工具或插件来辅助理解和调试Hibernate的懒加载行为,比如日志工具...
或者,如果不希望整个实体被更新,可以只更新需要的部分,使用`Hibernate.initialize()`初始化特定关联关系,避免其他部分被加载和更新。 2. **设置属性不可变**:对于某些不应被修改的属性,可以在实体类中使用`@...
当业务层需要为Web层提供完整的数据集合时,确保在Session关闭前调用`Hibernate.initialize()`来初始化集合,或者在查询中使用`FETCH`从句或`FetchMode.JOIN`以预加载所需的数据。这避免了因延迟加载导致的多次...
1. **在关闭Session之前初始化关联对象**:在关闭Session前,可以显式调用`Hibernate.initialize()`方法来初始化关联对象,确保数据已经加载到内存中。 2. **使用OpenSessionInView模式**:这是一种常用的设计模式,...
Hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法可以通过使用 OpenSessionInViewFilter 或者 Hibernate 的 initialize 方法来解决。这些方法可以确保 Hibernate 的懒加载特性能够正常工作,从而提高应用程序...
- 解决方法之一是在关闭 Session 之前加载关联对象,如通过 `session.evict(user)` 或 `Hibernate.initialize(user.getPermissions())`。 - 另一种解决办法是在 HQL 查询或 Criteria 查询中使用 Join Fetching。 ...
Lazy initialize * the <code>SessionFactory</code> if needed. * * @return Session * @throws HibernateException */ public static Session getSession() throws HibernateException { Session session ...
- 解决方案之一是使用`Hibernate.initialize()`方法显式初始化对象,但这需要在每个可能需要的对象上进行调用,可能会增加代码复杂性。 - 另一种更优雅的解决方案是采用Open Session in View模式。 3. **Open ...
当Session关闭后访问延迟加载的对象时,会抛出`LazyInitializationException`异常,可以通过提前调用`Hibernate.initialize()`或在Session关闭前查询所需属性来解决。 2. **集合**:在一对多或集合关联中,可以...