下面是我写在DAO中的一串代码
@Override
public Employee findByUsernameAndPassword(Employee employee) {
String hql="from EMPLOYEE where USERNAME=? and PASSWORD=?";
System.out.println("执行到了这");
List<Employee> list=(List<Employee>) this.getHibernateTemplate().find(hql,employee.getUsername(),employee.getPassword());
System.out.println(list.size());
if(list.size()>0){
return list.get(0);
}
else
{
return null;
}
}
我的数据库中的表名确实是全部大写的,可以看看我下面的hibernate映射文件(自动生成的额)
<hibernate-mapping>
<class name="com.employee.domain.Department" table="DEPARTMENT">
<id name="did" type="java.lang.Integer">
<column name="DID" />
<generator class="native" />
</id>
<property name="dname" type="java.lang.String">
<column name="DNAME" />
</property>
<property name="ddesc" type="java.lang.String">
<column name="DDESC" />
</property>
<set name="employees" table="EMPLOYEE" inverse="false" lazy="true">
<key>
<column name="DID" />
</key>
<one-to-many class="com.employee.domain.Employee" />
</set>
</class>
</hibernate-mapping>
但是执行之后,控制台报异常如下
严重: Exception occurred during processing request: EMPLOYEE is not mapped [from EMPLOYEE where USERNAME=? and PASSWORD=?]; nested exception is org.hibernate.hql.internal.ast.QuerySyntaxException: EMPLOYEE is not mapped [from EMPLOYEE where USERNAME=? and PASSWORD=?]
org.springframework.orm.hibernate4.HibernateQueryException: EMPLOYEE is not mapped [from EMPLOYEE where USERNAME=? and PASSWORD=?]; nested exception is org.hibernate.hql.internal.ast.QuerySyntaxException: EMPLOYEE is not mapped [from EMPLOYEE where USERNAME=? and PASSWORD=?]
然后,只需要把hql里面的表名改成首字母大写,其他小写就行了。
上面的话是我还没有深刻理解的时候写下的;
可能有的入门的朋友觉得可能我说的对了,其实,为什么会出现首字母大写的问题是因为大多数老师或学生习惯性的在写实体类的时候首字母大写。
MySQL数据库里面是不区分大小写的。在我理解到这一点之后,回来改写,希望不要误导了你们。。。。sorry!!!!!!