浏览 6158 次
锁定老帖子 主题:求助:关于hql的一个问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2003-10-24
List L_p1 = s.find( "select person.id person.name from Person as person " + "where person.name =?", "王志", Hibernate.STRING );; System.out.println("find 2 显示");; Person p5 =(Person);L_p1.get(0);; System.out.println(p5.getName(););; System.out.println(p5.getId(););; System.out.println(L_p1.size(););; 错误提示: net.sf.hibernate.QueryException: , expected in SELECT [select person.id person.name from h.Person as person where person.name =?] at net.sf.hibernate.hql.SelectParser.token(SelectParser.java:152); at net.sf.hibernate.hql.ClauseParser.token(ClauseParser.java:87); at net.sf.hibernate.hql.ClauseParser.end(ClauseParser.java:114); at net.sf.hibernate.hql.PreprocessingParser.end(PreprocessingParser.java:140); at net.sf.hibernate.hql.ParserHelper.parse(ParserHelper.java:30); at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:146); at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:133); at net.sf.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:352); at net.sf.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:330); at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1368); at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1332); at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1322); at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1318); at h.TestPerson.main(TestPerson.java:66); Exception in thread "main" [/swf][/b] 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-10-24
引用 "select person.id person.name from Person as person " + person.id person.name中间少个逗号。 |
|
返回顶楼 | |
发表时间:2003-10-24
引用 但加了以后问题变化!!不能正常显示!
错误:java.lang.ClassCastException: [Ljava.lang.Object; at h.TestPerson.main(TestPerson.java:73); Exception in thread "main" find 2 显示 |
|
返回顶楼 | |
发表时间:2003-10-24
引用 List L_p1 = s.find( "select person.id, person.name from Person as person " + "where person.name =?", "王志", Hibernate.STRING ); L_p1中的每个元素是Object[2] 改为: Object[] p5 =(Object[]);L_p1.get(0);; System.out.println(p5[0]);; System.out.println(p5[1]);; System.out.println(L_p1.size(););; |
|
返回顶楼 | |
发表时间:2003-10-24
谢谢!
不好意思!问题还存在!! 我是新手,请帮我再看一下!! |
|
返回顶楼 | |
发表时间:2003-10-24
没道理呀,还是这个错误?
|
|
返回顶楼 | |
发表时间:2003-10-24
zqw 写道 谢谢!
不好意思!问题还存在!! 我是新手,请帮我再看一下!! 晕啊,你给出完整错误信息,和错误代码才可以知道。 |
|
返回顶楼 | |
发表时间:2003-10-24
package h; import net.sf.hibernate.Session; import net.sf.hibernate.Transaction; import net.sf.hibernate.SessionFactory; import net.sf.hibernate.cfg.Configuration; import net.sf.hibernate.tool.hbm2ddl.SchemaExport; import java.util.List; import java.lang.Object; import net.sf.hibernate.*; //import net.sf.hibernate.Hibernate; //import net.sf.hibernate.QueryException; //import net.sf.hibernate.hql.SelectParser; class TestPerson{ private static SessionFactory sessions; public static void main(String[] args) throws Exception{ //配置环境,分析xml映射文件 Configuration conf= new Configuration() .addClass(Person.class); //生成并输出sql到文件(当前目录)和数据库 SchemaExport dbExport=new SchemaExport(conf); dbExport.setOutputFile("sql.txt"); //dbExport.create(true, true); sessions = conf.buildSessionFactory(); //以上都是些固定格式的环境配置 //start...... Session s = sessions.openSession(); Transaction t = s.beginTransaction(); //1.用普通使用方式建立对象,填充数据 Person p1=new Person(); p1.setName("姚明"); p1.setAddress("西安电子科技大学"); Person p2=new Person(); p2.setName("王志"); p2.setAddress("西安电子科技大学"); //2.查询读取数据到对象中 Person p3=new Person();----已知标识符时 String s1="4028d25af858778100f8587788940001"; Person p3 = (Person) s.load(Person.class, s1); //查看p3中的记录 System.out.println("LOAD显示"); System.out.println(p3.getName()); System.out.println(p3.getAddress()); //3.未知标识符的查询读取方法 String name="姚明"; List L_p = s.find( " from Person " + "where name = ?", name, Hibernate.STRING ); System.out.println("find 显示"); Person p4 =(Person)L_p.get(0); System.out.println(p4.getName()); System.out.println(p4.getAddress()); System.out.println(L_p.size()); //4.查询实例二 List L_p1 = s.find( "select person.id ,person.name from Person as person " + "where person.name =?", "王志", Hibernate.STRING ); System.out.println("find 2 显示"); Object[] p5 =(Object[])L_p1.get(0); //System.out.println(p5.getName()); //System.out.println(p5.getId()); System.out.println(p5[0]); System.out.println(p5[1]); System.out.println(L_p1.size()); //5.update()应用 Person p6=new Person(); p6.setName("巴特"); p6.setId("4028d25af8587e5400f8587e5acd0002"); p6.setAddress("西安电子科技大学1"); Person p7=new Person(); p7.setId("4028d25af858980900f8589811dc0003"); p7.setName("孙继"); p7.setAddress("西安电子科技大学1"); s.update( p7,"4028d25af858980900f8589811dc0001"); //6.持久化 s.save(p1); s.save(p2); //此时p1、p2已经可以在数据库中找到 t.commit(); s.close(); } } 这是一个正确的程序,请各位参考 |
|
返回顶楼 | |
发表时间:2003-10-24
update()时如何根据需要修改 ID 呢?
|
|
返回顶楼 | |
发表时间:2003-10-24
天!我发现错误了!!
不好意思!:)数组定义错!没道理.... |
|
返回顶楼 | |