一条MySQL查询语句

java_my_love 2008-04-01 09:40:51
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那更好了
...全文
149 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
java_my_love 2008-04-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cangwu_lee 的回复:]

錯誤說你沒有創建映射。
HIBERNATE,要求面向對像,沒有映射,沒法返回。
[/Quote]
我影射了 如果改成
String hql = "FROM YcYearVerify";
Query query = session.createQuery(hql);
List list = query.list()是可以成功返回的
cangwu_lee 2008-04-01
  • 打赏
  • 举报
回复

錯誤說你沒有創建映射。
HIBERNATE,要求面向對像,沒有映射,沒法返回。
java_my_love 2008-04-01
  • 打赏
  • 举报
回复
有条件的帮忙试下,谢谢,下面是MYSQL脚本

DROP TABLE IF EXISTS `yc_yearverify`;

CREATE TABLE `yc_yearverify` (
`yid` bigint(20) NOT NULL COMMENT '年审流水号',
`CarSign` varchar(24) default NULL COMMENT '车牌号',
`YearVerifyDate` date default NULL COMMENT '送审日期',
`YearVerifyItem` varchar(24) default NULL COMMENT '年审项',
`YearVerifyFee` float default NULL COMMENT '年审费用',
`YearVerifyResult` varchar(24) default NULL COMMENT '年审结果',
`NextDate` date default NULL COMMENT '下次年审日期',
PRIMARY KEY (`yid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

insert into `yc_yearverify`(`yid`,`CarSign`,`YearVerifyDate`,`YearVerifyItem`,`YearVerifyFee`,`YearVerifyResult`,`NextDate`) values (4,'苏A111','2007-03-01','',100,'通过','2008-04-09'),(5,'苏A111','2008-03-31','',200,'通过','2009-01-15'),(6,'苏A111','2005-02-19','',300,'通过','2007-03-25'),(7,'苏A222','2006-03-30','',200,'通过','2007-03-31'),(8,'苏A333','2006-03-28','',23,'通过','2007-03-28'),(9,'苏A222','2007-04-01','',100,'通过','2008-04-10'),(10,'苏A333','2007-03-28',NULL,100,'通过','2008-04-11');

67,537

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧