Criteriaを使用してクエリを作成しようとしていますが、結合したエンティティからのデータのマッピングに成功しません。Hibernate Criteria:参加エンティティによる投影
final Criteria criteria = session.createCriteria(Order.class, "o")
.createAlias("o.shippingCondition", "sc", JoinType.INNER_JOIN)
.setProjection(Projections.projectionList()
.add(Projections.property("o.id"), "id")
.add(Projections.property("o.orderNum"), "orderNum")
.add(Projections.property("o.notes"), "notes")
.add(Projections.property("sc.id"), "id"))
.add(Restrictions.eq("o.id", id))
.setResultTransformer(Transformers.aliasToBean(Order.class));
return (Order) criteria.uniqueResult();
マイエンティティ:この基準では
は、OrderエンティティのIDがShippingConditionエンティティのIDで上書きされるクエリ
@Table(name = "order", schema = "myschema")
public class Order {
private Integer id;
private String orderNum;
private String notes;
private ShippingCondition shippingCondition;
...
}
@Table(name = "shipping_condition", schema = "myschema")
public class ShippingCondition {
private Integer id;
private String shippingCondition;
private Integer sorting;
...
}
私は.add(Projections.property("sc.id"), "shippingCondition.id")
で.add(Projections.property("sc.id"), "id")
を置き換えるためにしようと試みてきたが、 ClassCastExceptionを取得しました(java.lang.ClassCastException: entity.Order cannot be cast to java.util.Map)
どうすればいいですか?
おかげ
これはうまくいっていますが、休止状態ではこの解決策を提案していないのは奇妙です。理由はありますか? – Nan
@Nanよく働いているのは、「OrderDto」ですか? –
特別なネストされたトランスがうまくいきます。 – Nan