2

来自实体框架背景我可以将我的 ORM 结果转换为包含完整后端模型数据子集的类。

我有一个 JAX-RS REST 服务,我通常会返回类似的东西

MyEntity result = em.createQuery(select e from MyEntity e ... blah blah blah).

我知道我可以这样做:

Object result = em.createQuery(select e.Title, e.Version, e.Date from MyEntity e... blah blah blah).

但是我可以a:将我的结果转换为一个单独的类,或者B在我的createquery中命名我的字段,以便在返回我的JSON时命名它们?

例如在 .Net Land 中,我可以做类似......

(select new {Title = e.Title, Version = e.Version}) 

然后将其转换为另一种类型。我尝试使用 typedquery 和强制转换,但我收到“类型 X 与返回类型 Y 不兼容”类型错误。

我的目标是返回我的信息的特定子集(视图模型/ DTO)以在特定场景中使用。

例如,我的模型很大,我不想每次都返回大量数据。

4

1 回答 1

8

NEW是的,可以使用 JPA 构造函数表达式(即关键字)创建非实体类型 :

List<DTO> dtos = em.createQuery("SELECT NEW com.example.DTO( o.title, o.version) FROM Entity o").getResultList();

DTO 必须有一个包含所有相关字段的构造函数。

不需要铸造。

于 2013-02-13T15:06:44.373 回答