当前位置: 首页 > 知识库问答 >
问题:

使用Hibernate可数据的Primeface的延迟加载行计数错误

羊刚捷
2023-03-14

我正在尝试为我的JSF数据表实现延迟加载,我的应用程序正在使用JSF2.0。Spring3和冬眠4。

我有以下的道

@Override
public int getRequestCount() {          
    Query query = entityManager.createNamedQuery("Request.count");
    return ((Long) query.getSingleResult()).intValue();
}

在ManagedBean中,我有

@Named("reqMB")
@Scope("request")
public class RequestManagedBean implements Serializable {

// other code .....    
lazyModel.setRowCount(getRequestService().getRequestCount());
....
return lazyModel;

在实体类中

@Entity
@Table(name = "V_REQUESTS")
@NamedQueries({
    @NamedQuery(name = "Request.count", query = "SELECT COUNT(r) FROM <viewname> r")
})
public class Request {

我面临的问题是,当我尝试将我的应用程序部署到weblogic 10.3.6时,我得到以下异常。

Error creating bean with name 'requestDAOImpl': Injection of 
autowired dependencies failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Could not 
autowire field: private org.hibernate.SessionFactory 
net.test.request.dao.RequestDAOImpl.sessionFactory; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating 
bean with name 'SessionFactory' defined in ServletContext resource 
[/WEB-INF/applicationContext.xml]: Invocation of init method failed; 
nested exception is org.hibernate.HibernateException: 
Errors in named queries: Request.count

如何解决此问题?

另一点是,除了使用以下内容之外,还有其他方法可以获取用于延迟加载的行计数吗?

@NamedQueries({
    @NamedQuery(name = "Request.count", query = "SELECT COUNT(r) 
    FROM vw_request r")})

谢谢

共有1个答案

钱卓君
2023-03-14

我已经设法解决了这个问题,我犯的错误是我使用了实际的视图名而不是类名,所以我改成了

@NamedQuery(name = "Request.count", query = "SELECT COUNT(r) FROM Request r").

我的另一个疑问是没有使用上面的方法来获取行计数,我已经修改了我的DAO如下,这样我就不需要在Entity类中使用@NamedQuery。

int count = ((Long)sessionFactory.getCurrentSession().createQuery("select count(*) 
from Request").uniqueResult()).intValue();
 类似资料:
  • 这是我在Stack Overflow上的第一篇文章。在发布之前,我研究了很多。在我使用Java Primefaces的系统中,我使用普通的SQL。我在第三个企业项目中,我更喜欢这种方式。 我找不到任何使用普通SQL的例子,只有使用框架(JPA等) 我知道在数组列表中我会手动传递限制。选择... from... ORDER BY... LIMIT 但是我需要一个完整的例子,使用数据库(不是内存中的静

  • 在我的JSF的数据中,我已经实现了延迟加载,当我分页通过记录时,执行下一组记录需要大约4到5秒钟的时间,实际上执行结果应该不到一秒钟。 这种情况发生在我实现它的方式上,我不知道如何解决这个问题。 扩展LazyDataModel的DataModel类 在道课上 有人能解释一下是什么原因导致了这些记录分页的延迟吗? 如果我删除以下内容 并执行,然后它是完全执行没有延迟,然而问题是总是5,这是我的每页默

  • 我想,我的java代码是正确的,但记录并没有显示在dataTable上。 请检查下面的代码。我不知道我在哪里犯了错误。 .xhtml JAVA getResultList getResultList方法返回一个正确的值,我调试它。我认为问题在于userDataList。

  • 问题内容: 我倾向于将Hibernate与Spring框架结合使用,它具有声明式事务划分功能(例如@Transactional)。 众所周知,hibernate试图尽可能做到 非侵入性 和 透明性 ,但是事实证明,在使用关系时这 更具挑战性 。 我看到了许多具有不同透明度的设计方案。 使关系不延迟加载(例如, 这违反了整个延迟加载的想法。 使用初始化初始化集合 这意味着与DAO的耦合较高 尽管我们

  • 这是我的实体: 在我的存储库中,我有: 如果表中有任何城市,会显示用户的全部信息: 如果没有城市,我想至少得到但我什么都没有:[] 请帮帮我。

  • 我有一个简单的页面: 而中的不起作用,只是刷新页面。但是外面的那个正在工作。 如果我以这种方式更改和: 内部的就像一个符咒。 有人知道为什么? 是虫子吗? 我在 玻璃鱼3.1.2 JSF 2.1.11(Mojarra) PrimeFaces 3.4-快照