Hibernate部分填充对象

时间:2014-04-10 13:17:14

标签: sql hibernate

我有一个包含很多属性的模型,我需要创建一个只包含其中一些属性的简单表。

假设我将模型定义为

@Entity
public class SomeData implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private long id;
    private String code;
    private String someOtherCode;
    private String name;
    private String address;
    private String someOtherOtherCode;
    @OneToMany(cascade = CascadeType.ALL)
    private Collection<SomeOtherData> someOtherData;
    @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
    private LocalDate dateFrom;
    @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
    private LocalDate dateTo;
    //getters and setters
}

我可以使用Query query = entityManager.createQuery("from SomeData");

轻松获取完全填充的模型对象列表

nameaddresscodeQuery query = entityManager.createQuery("select c.name, c.code, c.address from SomeData c");一起使用似乎有所不同。而不是创建SomeData对象并用部分数据填充它们,而是query.getResultList()收到的是表示行的Object数组的列表。

有没有办法告诉Hibernate给我一个只填充了我要求的数据的SomeData对象列表?

1 个答案:

答案 0 :(得分:2)

使用此HQL:

SELECT new SomeData(c.name, c.code, c.address) FROM SomeData c

请注意,您必须使用现有的构造函数。

结果将是SomeData列表。