我有一个包含很多属性的模型,我需要创建一个只包含其中一些属性的简单表。
假设我将模型定义为
@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");
仅name
,address
和code
与Query query = entityManager.createQuery("select c.name, c.code, c.address from SomeData c");
一起使用似乎有所不同。而不是创建SomeData对象并用部分数据填充它们,而是query.getResultList()
收到的是表示行的Object
数组的列表。
有没有办法告诉Hibernate给我一个只填充了我要求的数据的SomeData对象列表?
答案 0 :(得分:2)
使用此HQL:
SELECT new SomeData(c.name, c.code, c.address) FROM SomeData c
请注意,您必须使用现有的构造函数。
结果将是SomeData列表。