org.springframework.orm.hibernate3.HibernateQueryException - HibernateTemplate
我对HibernateTemplate有问题,不知道哪里出了问题。我使用的是Hibernate3和Tomcat6。在我的DAO中,我有一些函数尝试使用字符串查询数据库,它们看起来工作正常。这样地
1 2 3 4 5 6 7 8 9 10 11 | public AppUser getUserByUserName(String username){ HibernateTemplate template=new HibernateTemplate(sessionFactory); try{ List<AppUser> appList = template.find(" from AppUser as au where au.username=?", username); tempUser = appList.get(0); return tempUser; } catch(Exception e){ System.out.println("Problem in AppUserDao--get byUsername:" + e.toString()); return null; } } |
然而,当我尝试使用整数进行查询时。像:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public List<AppUser> getAllMerchants(){ HibernateTemplate template=new HibernateTemplate(sessionFactory); try{ List<AppUser> appList = template.find(" from appuser as au where au.securityLevel!=?", 112); if(appList.size() > 0) return appList; else return null; } catch(Exception e){ System.out.println("Problem in AppUserDao--getAllMerchants:" + e.toString()); return null; } } |
号
我得到这个错误:
1 | org.springframework.orm.hibernate3.HibernateQueryException: appuser is not mapped [ from appuser as au where au.securityLevel!=?]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: appuser is not mapped [ from appuser as au where au.securityLevel!=?] |
。
我的实体似乎有必要的注释。因为它适用于第一个函数,所以我不明白为什么它不适用于第二个函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | @Entity @Table(name="appuser") public class AppUser { private int id; private String username; private String password; private String firstName; private String secondName; private int state; private int securityLevel; @Id @GeneratedValue(strategy = GenerationType.AUTO, generator="idSeq") @SequenceGenerator(name="idSeq",sequenceName="app_user_seq_id") public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Column(name="password_2") public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getSecondName() { return secondName; } public void setSecondName(String secondName) { this.secondName = secondName; } public int getState() { return state; } public void setState(int state) { this.state = state; } public int getSecurityLevel() { return securityLevel; } public void setSecurityLevel(int securityLevel) { this.securityLevel = securityLevel; } } |
。
你的代码好像有错别字。在第一个函数中,您使用"from appuser",在第二个函数中使用"from appuser"。尝试将第二个查询更改为"from appuser"。
谢谢你的回答我意识到我们必须使用commandclass名称而不是在查询中使用表名称
1 | return getHibernateTemplate().find("from ModuleCommand order by application"); |
modulecommand-命令类名称应用程序模块-表名。
在豆子里
1 2 3 4 5 6 7 | <bean id=".... . . . <property name="commandClass" value="com.web.mon.thread.ModuleCommand" /> ... </bean> |
号