考虑以下问题:
"SELECT a.code as code,{locFrom.*} " +
"FROM audit.auditlogrecord a " +
"LEFT OUTER JOIN iwrs.location locFrom on locFrom.id=old_value "
我想将结果映射到此类:
public class MovementHistoryImpl implements MovementHistory {
private String code;
private String user;
private Date date;
private Location locFrom;
使用仅标量属性获取List时没有问题:
List list = currentSession().createSQLQuery(query)
.addScalar("code")
.setResultTransformer(Transformers.aliasToBean(MovementHistoryImpl.class))
.list();
但是,当我想注入MovementHistoryImpl的locFrom属性时,添加
.addEntity("locFrom",LocationImpl.class)
不起作用:生成的MovementHistoryImpl项目具有locFrom的空值。
我没有使用resultTransformer进行检查(即返回一个List),我确实得到了一个有效的(和期望的)LocationImpl对象。 我的问题是:
1)如何正确填充MovementHistoryImpl? 2)如果您的MovementHistoryImpl属性的名称不同,它是否有效(最初我使用的是Location,而不是locFrom) 3)是否可以仅获取Location的一个属性 - 实际上我对locFrom。*不感兴趣,但只对locFrom.name感兴趣,所以我不介意MovementHistoryImpl中的locFrom对象只有“name”属性填充。