次のクエリを検討してください。
"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 の値は null です。
resultTransformer を使用せずに (つまり、List を返す) 検査したところ、有効な (そして期待される) LocationImpl オブジェクトが得られました。私の質問は次のとおりです。
1) MovementHistoryImpl を正しく設定するにはどうすればよいですか? 2) MovementHistoryImpl プロパティの名前が異なっていても機能しますか (最初は locFrom の代わりに Location from がありました 3) Location のプロパティを 1 つだけ取得することは可能ですか - 実際には locFrom.* には興味がありませんが、locFrom のみ.name であるため、MovementHistoryImpl の locFrom オブジェクトに「name」プロパティのみを設定してもかまいません。