当前位置: 代码迷 >> J2EE >> SSH框架里用SQL查出的Object对象不能转化作映射类是为什么
  详细解决方案

SSH框架里用SQL查出的Object对象不能转化作映射类是为什么

热度:50   发布时间:2016-04-21 22:17:28.0
SSH框架里用SQL查出的Object对象不能转化为映射类是为什么啊
User表和Department两张表 是多对一的关系,Department的主键是User的外键

SSH框架中hibernate的配置文件如下
<hibernate-mapping>
   <class name="com.pmsystem.model.authority.Department" table="t_department">
  <id name="dptId">
     <generator class="native"/>
  </id>
  
  <property name="dptName">
     <column name="dptName" not-null="true" />
  </property>
   </class>
</hibernate-mapping>

<hibernate-mapping>
   <class name="com.pmsystem.model.authority.User" table="t_user">
  <id name="userId">
     <generator class="native"/>
  </id>
  <property name="loginName">
     <column name="loginName" not-null="true" />
  </property>
  <property name="password">
     <column name="password" not-null="true" />
  </property>
  <property name="userName">
     <column name="userName" not-null="true" />   
  </property>
 
      <many-to-one name="Department" class="com.pmsystem.model.authority.Department" column="dptId" cascade="save-update"></many-to-one>      
   </class>
</hibernate-mapping>








public List<User> getLoginUser(final User user) {

//查询登陆的sql语句必须是fianl类型的


final String loginSql = "select * from t_user u where u.loginName = ? and u.password = ?";

List<User> result = this.getHibernateTemplate().executeFind(new HibernateCallback(){

public List<User> doInHibernate(Session session) throws HibernateExceptionSQLException {

SQLQuery query = session.createSQLQuery(loginSql);

query.setString(0, user.getLoginName()); 
                                query.setString(1, user.getPassword());
                
                               //获得结果
                               List<Object> temp = (List)query.list();
                               List<User> t = (List)temp ;
                               return t;

}

});
return result;
}





sql查出来的对象放在list里,第0个里面是Object类型的,转换成User类型就报错

或者直接List<User> temp = query.list();
返回List<User> 类型的,虽然temp不为空,显示里面是User类型的,但是只要用sett和gett去取里面的值就报类型转换错误

------解决方案--------------------
//.addEntity(User.class)作用是将object[]转换成指定为类
SQLQuery query = session.createSQLQuery(loginSql).addEntity(User.class);

试试这个看行不。
  相关解决方案