我在使用 HibernateTemplate 时遇到问题,我不知道我哪里出错了。我正在使用 Hibernate3 和 Tomcat6。在我的 DAO 中,我有尝试使用字符串查询数据库的函数,它们似乎工作正常。像这样
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;
}
}
然而,当我尝试使用整数进行查询时。像:
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;
}
}
我收到此错误:
org.springframework.orm.hibernate3.HibernateQueryException: appuser 未映射 [ from appuser as au where au.securityLevel!=?]; 嵌套异常是 org.hibernate.hql.ast.QuerySyntaxException: appuser is not mapped [ from appuser as au where au.securityLevel!=?]
我的实体似乎有必要的注释。由于它适用于第一个功能,我不明白为什么它不适用于第二个功能。
@实体 @Table(name="appuser") 公共类 AppUser { 私人 int id; 私人字符串用户名; 私人字符串密码; 私人字符串名; 私人字符串第二名; 私有 int 状态; 私有 int 安全级别; @ID @GeneratedValue(策略= GenerationType.AUTO,生成器=“idSeq”) @SequenceGenerator(name="idSeq",sequenceName="app_user_seq_id") 公共 int getId() { 返回标识; } 公共无效setId(int id){ 这个.id = id; } 公共字符串 getUsername() { 返回用户名; } 公共无效 setUsername(字符串用户名){ this.username = 用户名; } @Column(name="password_2") 公共字符串 getPassword() { 返回密码; } 公共无效setPassword(字符串密码){ this.password = 密码; } 公共字符串 getFirstName() { 返回名字; } 公共无效setFirstName(字符串名字){ this.firstName = 名字; } 公共字符串 getSecondName() { 返回第二个名字; } 公共无效 setSecondName(字符串 secondName){ this.secondName = secondName; } 公共 int getState() { 返回状态; } 公共无效 setState(int state) { this.state = 状态; } 公共 int getSecurityLevel() { 返回安全级别; } 公共无效 setSecurityLevel(int securityLevel) { this.securityLevel = 安全级别; } }