【问题标题】:Projections for Collections and Nested Projections集合和嵌套投影的投影
【发布时间】:2010-05-07 11:09:05
【问题描述】:

第一部分是HOW TO PROJECT COLLECTIONS?

我们可以对集合元素应用投影吗? 例如

    class User{
    private address List<Address>;
}

class Address{
    private String city;
    private String state;
}

现在我可以只加载用户类的地址属性吗?使用如下代码:

criteria.setProjection(Projections.property("Address"));

但它总是返回 null,即使对象确实设置了地址字段。 有什么不同的方式来投射收藏品吗??

第二部分:嵌套投影。 考虑如上所示的相同模型,但不是有地址集合,而是有一个元素。 现在,如果我只想加载属于 User 类的 Address 的“city”属性怎么办?

我试过了:

Projections.property("Address.City")

但它给了我错误,说明无法解析属性:用户的“Address.City”。

有没有关于Projecting Collection 元素和Nested Projections 的规定??

【问题讨论】:

    标签: java hibernate collections


    【解决方案1】:

    Hibernate 区分大小写。因此,不要使用 Address.City,而是使用 address.city。如果不起作用,请尝试使用别名,例如:

    DetachedCriteria criteria = DetachedCriteria.forClass(User.class);
    criteria.createAlias("address", "addAlias");
    criteria.setProjection(Projections.property("addAlias.city"));
    

    【讨论】:

    • 应该以相同的方式工作(为确保它受支持,请查看您的休眠版本的休眠参考手册)。请注意,您的示例中存在相同的“案例”问题:Projections.property 使用“地址”,而不是“地址”。
    • class User{ private address Map&lt;String,String&gt;; } 如何在地图上应用投影,应用这些条件时我得到空对象
    猜你喜欢
    • 2018-01-06
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2021-08-28
    • 2013-11-26
    • 2015-05-12
    相关资源
    最近更新 更多