hibernate 只查部分字段映射到实体类,应该怎么处理? 不用hql
我是这么写的sql="selectname1,name2fromxx“SQLQueryqueryObject=getSession().createSQLQuery(sq...
我是这么写的sql = "select name1,name2 from xx“
SQLQuery queryObject = getSession().createSQLQuery(sql);
queryObject.addEntity("model").list();
Class model{
name1;
name2;
name3;
public model(name1,name2)
{
this.name1 = name1;
this.name2 = name2;
}
}
model中还有其他字段在xml中做了映射,进行查询时报”列名无效“
估计两位都没仔细看我的提问
问题自己解决了:
SQLQuery queryObject = getSession().createSQLQuery(sql)..addScalar(这里写要映射实体类的字段名)
Class cls = Class.forName(实体类型);
List list = queryObject.setResultTransformer(Transformers.aliasToBean(cls)).list();
这样就OK了 都可以抛开xml配置文件做动态映射
因为Transformers.aliasToBean会去关联实体类的set方法 所以set方法的参数类型需要与数据库查询出来的参数类型一致
也可以用个通用的参数:setXX(Object param) 展开
SQLQuery queryObject = getSession().createSQLQuery(sql);
queryObject.addEntity("model").list();
Class model{
name1;
name2;
name3;
public model(name1,name2)
{
this.name1 = name1;
this.name2 = name2;
}
}
model中还有其他字段在xml中做了映射,进行查询时报”列名无效“
估计两位都没仔细看我的提问
问题自己解决了:
SQLQuery queryObject = getSession().createSQLQuery(sql)..addScalar(这里写要映射实体类的字段名)
Class cls = Class.forName(实体类型);
List list = queryObject.setResultTransformer(Transformers.aliasToBean(cls)).list();
这样就OK了 都可以抛开xml配置文件做动态映射
因为Transformers.aliasToBean会去关联实体类的set方法 所以set方法的参数类型需要与数据库查询出来的参数类型一致
也可以用个通用的参数:setXX(Object param) 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询