一条MySQL查询语句
public class Test {
public static void main(String[] args) {
Session session = HibernateSessionFactory.getSession();
//String hql = "FROM YcYearVerify";
String sql = "select a.* from yc_yearverify a,(select CarSign,max(YearVerifyDate) YearVerifyDate from yc_yearverify where DATE_ADD(sysdate(),interval 10 DAY)>nextdate and sysdate()<nextdate group by CarSign) b where a.CarSign = b.CarSign and a.YearVerifyDate = b.YearVerifyDate";
try {
Query query = session.createSQLQuery(sql);
List list = query.list();
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
YcYearVerify yearverify = (YcYearVerify)iterator.next();
System.out.println(yearverify.getCarSign());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
抛出异常:
org.hibernate.MappingException: No Dialect mapping for JDBC type: 7
at org.hibernate.dialect.TypeNames.get(TypeNames.java:56)
at org.hibernate.dialect.TypeNames.get(TypeNames.java:81)
at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:192)
at org.hibernate.loader.custom.CustomLoader.getHibernateType(CustomLoader.java:161)
at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:131)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1678)
at org.hibernate.loader.Loader.doQuery(Loader.java:662)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2145)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:111)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1655)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:164)
at com.yj.Test.main(Test.java:18)
这条SQL语句在查询分析器里面没有错,上面说映射类型错误,不知道什么原因
如果有高手能把这个改成HQL那更好了