2
回答
hibernate中的select列如果有int类型的就会报错
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

我在项目中使用HQL查询数据时,只要是HQL中的select 后面包含int 类型的列,就会报错,怎么回事,代码如下:


public static void main(String[] args) throws Exception {
        String newSQ = "select frontNum, count from AdvanceQuery";
        Query query = HibernateUtil.getSession().createQuery(newSQ);
        List<Object[]> list = query.list();
        for (Object object2[] : list) {
            for (Object object : object2) {
                System.out.print("\t" + object);
            }
        }
}

其中,frontNum是一个char类型的,count是一个int类型的,只要有这个count,执行这个查询时就会报错,报错信息如下:

Exception in thread "main" org.hibernate.hql.internal.ast.QuerySyntaxException: expecting OPEN, found 'from' near line 1, column 24 [select frontNum, count from zuccess.zcplt.basic.advanced.model.AdvanceQuery]
	at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:91)
	at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:109)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:304)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:203)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)
	at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:190)
	at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
	at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
	at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1800)
	at zuccess.zcplt.basic.advanced.util.ClassUtils.main(ClassUtils.java:39)
我的实体类的信息如下:
private int count;               //记录被点击的次数
private char frontNum;           //是否被置顶,置顶则为1 ,否则为0
对应的xml文件为:
<property name="frontNum" type="char">
            <column name="FRONTNUM" length="1" />
 </property>
 <property name="count" type="integer">
	     <column name="COUNT" length="4" />
 </property>
数据库表中的相应字段为:

请问大神们,谁知道这是为什么?


举报
顶部