例如我们有一个照片的PO
//照片po
class Photo
{
int id;
string title;
double avgScore;//平均分,这个字段在数据库中是没有映射的,也就是 非持久化属性
}
//投票po ,每张照片对应多个vote记录
class Vote
{
int id;
int photoId;
int score;
}
用sql = "select {p.*,avg(v.score) as p.avgScore} from photo p left join vote v on p.id = v.photoId ";
单纯的sql结果很满意,包含照片的信息和每张照片的平均分数。
代码如下:
Query query = session.createSQLQuery(sql.toString()).addEntity(Photo.class);
运行后,没有错误,但是在SQL语句中的avg(v.score) as p.avgScore} 这一部分,没有被像我们预期的那样set进photo的avgScore属性中。
问题:
我们如果遇到要用原生sql进行查询,并要将结果set进一个po中,其中set进po中的属性,不完全是被可持久化的,例如本例
中的avgScore属性。
期待大家来解答这个疑惑~谢谢! thanks a lot !
PS: 请别和我说完全可以用hql等方式,这只是个简单的示例,目前是想研究原生sql对象映射问题。