测试代码如下
1,测试实体类
package com.dtsoft;
import java.util.Date;
/**
* Test generated by MyEclipse Persistence Tools
*/
public class Test implements java.io.Serializable {
// Fields
private Integer id;
private Date dt;
// Constructors
/** default constructor */
public Test() {
}
/** minimal constructor */
public Test(Integer id) {
this.id = id;
}
/** full constructor */
public Test(Integer id, Date dt) {
this.id = id;
this.dt = dt;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public Date getDt() {
return this.dt;
}
public void setDt(Date dt) {
this.dt = dt;
}
}
2测试代码
1:第一种方法
package com.dtsoft.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Configuration cf = new Configuration().configure();
SessionFactory sf = cf.buildSessionFactory();
Date date = new Date();
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
rightNow.set(Calendar.HOUR_OF_DAY, 00);
rightNow.set(Calendar.MINUTE, 00);
rightNow.set(Calendar.SECOND, 00);
Date date1 = rightNow.getTime();
System.out.println(date);
Session s = sf.openSession();
String hql = "select * from text where dt<'"+date1+"'";
Transaction t = s.getTransaction();
t.begin();
s.createQuery(hql);
t.commit();
s.flush();
s.close();
}
报以下异常:
Mon Feb 07 03:12:40 CST 2000
Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [select * from text where dt<'Mon Feb 07 00:00:00 CST 2000']
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
at com.dtsoft.test.Test.main(Test.java:49)
Caused by: line 1:8: unexpected token: *
at org.hibernate.hql.antlr.HqlBaseParser.selectClause(HqlBaseParser.java:1330)
at org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1106)
at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:702)
at org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296)
at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:238)
... 9 more
2:一种方法
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Configuration cf = new Configuration().configure();
SessionFactory sf = cf.buildSessionFactory();
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
rightNow.set(Calendar.HOUR_OF_DAY, 00);
rightNow.set(Calendar.MINUTE, 00);
rightNow.set(Calendar.SECOND, 00);
Date date1 = rightNow.getTime();
System.out.println(date);
Session s = sf.openSession();
String hql = "select * from text where dt<?";
Transaction t = s.getTransaction();
t.begin();
s.createQuery(hql).setDate(0, date1);
t.commit();
s.flush();
s.close();
}
Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [select * from text where dt<?]
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
at com.dtsoft.test.Test.main(Test.java:49)
Caused by: line 1:8: unexpected token: *
at org.hibernate.hql.antlr.HqlBaseParser.selectClause(HqlBaseParser.java:1330)
at org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1106)
at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:702)
at org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296)
at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:238)
... 9 more
1,测试实体类
package com.dtsoft;
import java.util.Date;
/**
* Test generated by MyEclipse Persistence Tools
*/
public class Test implements java.io.Serializable {
// Fields
private Integer id;
private Date dt;
// Constructors
/** default constructor */
public Test() {
}
/** minimal constructor */
public Test(Integer id) {
this.id = id;
}
/** full constructor */
public Test(Integer id, Date dt) {
this.id = id;
this.dt = dt;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public Date getDt() {
return this.dt;
}
public void setDt(Date dt) {
this.dt = dt;
}
}
2测试代码
1:第一种方法
package com.dtsoft.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Configuration cf = new Configuration().configure();
SessionFactory sf = cf.buildSessionFactory();
Date date = new Date();
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
rightNow.set(Calendar.HOUR_OF_DAY, 00);
rightNow.set(Calendar.MINUTE, 00);
rightNow.set(Calendar.SECOND, 00);
Date date1 = rightNow.getTime();
System.out.println(date);
Session s = sf.openSession();
String hql = "select * from text where dt<'"+date1+"'";
Transaction t = s.getTransaction();
t.begin();
s.createQuery(hql);
t.commit();
s.flush();
s.close();
}
报以下异常:
Mon Feb 07 03:12:40 CST 2000
Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [select * from text where dt<'Mon Feb 07 00:00:00 CST 2000']
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
at com.dtsoft.test.Test.main(Test.java:49)
Caused by: line 1:8: unexpected token: *
at org.hibernate.hql.antlr.HqlBaseParser.selectClause(HqlBaseParser.java:1330)
at org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1106)
at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:702)
at org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296)
at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:238)
... 9 more
2:一种方法
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Configuration cf = new Configuration().configure();
SessionFactory sf = cf.buildSessionFactory();
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
rightNow.set(Calendar.HOUR_OF_DAY, 00);
rightNow.set(Calendar.MINUTE, 00);
rightNow.set(Calendar.SECOND, 00);
Date date1 = rightNow.getTime();
System.out.println(date);
Session s = sf.openSession();
String hql = "select * from text where dt<?";
Transaction t = s.getTransaction();
t.begin();
s.createQuery(hql).setDate(0, date1);
t.commit();
s.flush();
s.close();
}
Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [select * from text where dt<?]
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
at com.dtsoft.test.Test.main(Test.java:49)
Caused by: line 1:8: unexpected token: *
at org.hibernate.hql.antlr.HqlBaseParser.selectClause(HqlBaseParser.java:1330)
at org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1106)
at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:702)
at org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296)
at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:238)
... 9 more