使用Query,在Hibernate Mapping中连接4个表

时间:2017-12-08 11:27:31

标签: java spring-mvc dao

目前我在Spring MVC Web应用程序中使用PostgreSQL数据库。我在PgAdmin工具中执行查询时能够获取值。 在我的查询中,我试图加入4个表并获取值。 我的疑问是:

SELECT (s.school_id, u.first_name, u.last_name, u.username, u.email, p.plan_name, s.start_date, s.end_date, s.subscription_price, (SELECT COUNT(*) FROM school_user t WHERE t.user_type = 'T' and t.school_id = s.school_id), (SELECT COUNT(*) FROM school_user t WHERE t.user_type = 'A' and t.school_id = s.school_id), (SELECT COUNT(*) FROM school_user t WHERE t.user_type = 'S' and t.school_id = s.school_id)) FROM school s inner join user u on s.user_created = u.user_id inner join plan p on s.current_plan = p.plan_Id where s.application_id = 30 and s.site_id = 42;

当我在Dao方法中使用相同的查询时,我收到的错误如下:

  

JDBC类型的无Dialect映射:1111

dao方法中使用的代码:

public List<Object[]> getInformationValues(int applicationId, int siteId) throws HibernateException {
    Session session = getCurrentSession();
    Query query = session.createSQLQuery("SELECT (s.school_id, u.first_name, u.last_name, u.username, u.email, p.plan_name, s.start_date, s.end_date, s.subscription_price, (SELECT COUNT(*) FROM school_user t WHERE t.user_type = 'T' and t.school_id = s.school_id), (SELECT COUNT(*) FROM school_user t WHERE t.user_type = 'A' and t.school_id = s.school_id), (SELECT COUNT(*) FROM school_user t WHERE t.user_type = 'S' and t.school_id = s.school_id)) FROM school s inner join user u on (s.user_created = u.user_id) inner join plan p on (s.current_plan = p.plan_Id) where s.application_id = :applicationId and s.site_id = :siteId") .setParameter("applicationId", applicationId) .setParameter("siteId", siteId);
    List<Object[]> results = query.list();
    return results;
}

有没有办法解决这个问题?

0 个答案:

没有答案