用SQL中的datepart()函数
datepart(year,'2004-1-1') --返回INT的2004
datepart(year,'2004-1-1') --返回INT的2004
解决方案 »
- java ee数据库取出数据为什么要先转换先?求解
- jxl读取excel最后一列为空,获取列时报错,少一列!
- 【第三章】 DI 之 3.2 循环依赖 ——跟我学spring3
- ssh整合空指针问题
- 大家帮忙 领导让我将汉字拼音对照表插入到oracle库中 字段是(id,汉字,拼音) 啊 a 阿 a e 埃 ai 挨 ai 哎 ai 唉 ai 哀 ai,一个字还可能对
- Hibernate+JSF架构的并发处理能力怎样?能支持2000用户的同时并发操作吗?
- 如何通过一个按钮生成页面,并且提示打开或者保存的功能??
- 有关rs.updateXXXX() 的一个问题
- 谁能告诉我关于J2EE的一些基本知识
- gson对map的list集合的json转换
- Jboss的网站怎么上不去了呢??????????????
- 关于JAVA语句问题
取得session以后
String hql = select datepart(year,convert(datetime,'2004-1-1')) from XX as xx
Query q = session.createQuery(hql);
List list = q.list();
还有,我从来没碰到过你说的比如substring()、SimpleDateFormat会出错问题
都很好用啊~~还有你的问题只需要 1900 + date.getYear() 就行了吧
我的xml配置为
<property column="zxrq" length="23" name="zxrq" type="timestamp"/>
String sql = select datepart(year,xx.date) from XX as xx;
Query sqlQuery = sess.createSQLQuery(sql);
List list = q.list();
strSQL
.append(" select ")
.append(" a.Id,")
.append(" b.AppraiseObjectName,")
.append(" c.CorporationTypeName,")
.append(" d.Xmmc,")
.append(" a.InvestValue,")
.append(" datepart(year,a.AppraiseDate),")
.append(" a.SatisfactionLevel,")
.append(" a.AppraiseMainBody ")
.append(" from ")
.append(" AppsAppraiseReport a,")
.append(" AppsAppraiseObject b,")
.append(" AppsCorporationType c,")
.append(" AppsImportenceItemList d")
.append(" where ")
.append(" a.AppraiseDate >= '")
.append(strCurrentYear + "'")
.append(" and ")
.append(" a.AppraiseDate < '")
.append(strNextYear + "'")
.append(" and ")
.append(" b.Id = a.AppraiseObjectId")
.append(" and ")
.append(" d.Id.Xmbm = a.Xmbm")
.append(" and ")
.append(" c.Id = b.Id")
.append(" order by ")
.append(" a.AppraiseDate ")
.append(" desc");
String[] bm={"a","b","c","d"};
Class[] bclass=new Class[4];
bclass[0]=AppsAppraiseReport.class;
bclass[1]=AppsAppraiseObject.class;
bclass[2]=AppsCorporationType.class;
bclass[3]=AppsImportenceItemList.class;
Session session = _RootDAO.createSession();
Query query=session.createSQLQuery(strSQL.toString(),bm,bclass); List ls=query.list();
错误:
1、对象名‘AppsAppraiseReport' 无效
2、对象名 'AppsAppraiseObject' 无效
3、对象名 'AppsCorporationType' 无效
4、对象名 'AppsImportenceItemList' 无效这是为什么呢?这几类都有,都是正确的啊,望指教!
String[] bm={"a","b","c","d"};
Class[] bclass=new Class[4];
AppsAppraiseReport a=new AppsAppraiseReport();
AppsAppraiseObject b=new AppsAppraiseObject();
AppsCorporationType c=new AppsCorporationType();
AppsImportenceItemList d=new AppsImportenceItemList();
bclass[0]=a.getClass();
bclass[1]=b.getClass();
bclass[2]=c.getClass();
bclass[3]=d.getClass();帮帮忙啊,烦人!
sqlQuery.setMaxResults(50);
List cats = sqlQuery.list();
传递给createSQLQuer()的三个参数是: SQL查询语句 表的别名 查询返回的持久化类 别名是为了在SQL语句中引用对应的类(本例中是Cat)的属性的。你也可以传递一个别名的String 数组和一个对应的Class的数组进去,每行就可以得到多个对象。 15.2. 别名和属性引用
上面使用的{cat.*}标记是“所有属性的”的简写。你可以显式的列出需要的属性,但是你必须让Hibernate为每个 属性提供SQL列别名。这些列的的占位表示符是以表别名为前导,再加上属性名。下面的例子中,我们从一个其它的表(cat_log) 中获取Cat对象,而非Cat对象原本在映射元数据中声明的表。注意你在where子句中也可以使用 属性别名。 String sql = "select cat.originalId as {cat.id}, cat.mateid as {cat.mate}, cat.sex as {cat.sex}, cat.weight*10 as {cat.weight}, cat.name as {cat.name}"
+ " from cat_log cat where {cat.mate} = :catId"
List loggedCats = sess.createSQLQuery(sql, "cat", Cat.class)
.setLong("catId", catId)
.list();注意: 如果你明确的列出了每个属性,你必须包含这个类和它的子类的属性! //??
如果不会你就可以用1900 + date.getYear()得到年份了啊。。根本不用提交SQL那样麻烦。。
1、对象名‘AppsAppraiseReport' 无效
2、对象名 'AppsAppraiseObject' 无效
3、对象名 'AppsCorporationType' 无效
4、对象名 'AppsImportenceItemList' 无效
代码如下:
strSQL
.append(" select ")
.append(" a.Id as {a.id},")
.append(" b.AppraiseObjectName as {b.AppraiseObjectName},")
.append(" c.CorporationTypeName as {c.CorporationTypeName},")
.append(" d.Xmmc as {d.Xmmc},")
.append(" a.InvestValue as {a.InvestValue},")
.append(" datepart(year,a.AppraiseDate) as {a.AppraiseDate},")
.append(" a.SatisfactionLevel as {a.SatisfactionLevel},")
.append(" a.AppraiseMainBody as {a.AppraiseMainBody}")
.append(" from ")
.append(" AppsAppraiseReport a,")
.append(" AppsAppraiseObject b,")
.append(" AppsCorporationType c,")
.append(" AppsImportenceItemList d")
.append(" where ")
.append(" a.AppraiseDate >= '")
.append(strCurrentYear + "'")
.append(" and ")
.append(" a.AppraiseDate < '")
.append(strNextYear + "'")
.append(" and ")
.append(" b.Id = a.AppraiseObjectId")
.append(" and ")
.append(" d.Id.Xmbm = a.Xmbm")
.append(" and ")
.append(" c.Id = b.Id")
.append(" order by ")
.append(" a.AppraiseDate ")
.append(" desc");
String[] bm={"a","b","c","d"};
Class[] bclass=new Class[4];
AppsAppraiseReport a=new AppsAppraiseReport();
AppsAppraiseObject b=new AppsAppraiseObject();
AppsCorporationType c=new AppsCorporationType();
AppsImportenceItemList d=new AppsImportenceItemList();
bclass[0]=a.getClass();
bclass[1]=b.getClass();
bclass[2]=c.getClass();
bclass[3]=d.getClass();
Session session = _RootDAO.createSession();
Query query=session.createSQLQuery(
strSQL.toString(),bm,bclass);这上面的四个类都没有子类的,而且bm和bclass都已经赋值了啊,为什么还是有错误?麻烦再帮我看看!