来自实体框架背景我可以将我的ORM结果转换为包含完整后端模型数据子集的类.
我有一个JAX-RS REST服务,我通常会返回类似的东西
MyEntity result = em.createQuery(select e from MyEntity e ... blah blah blah).
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做:
Object result = em.createQuery(select e.Title, e.Version, e.Date from MyEntity e... blah blah blah).
Run Code Online (Sandbox Code Playgroud)
但是,我可以:将我的结果转换为单独的类,或者在我的createquery中命名我的字段,以便在返回我的JSON时命名它们吗?
例如在.Net Land我可以做类似......
(select new {Title = e.Title, Version = e.Version})
Run Code Online (Sandbox Code Playgroud)
然后将其转换为另一种类型.我尝试使用typedquery和cast但是我得到了"Type X与返回类型Y不兼容"类型错误.
我的目标是返回我的信息的特定子集(视图模型/ DTO),以便在特定场景中使用.
例如,我的模型非常庞大,我不希望每次都返回大量数据.
是的,使用JPA构造函数表达式(即NEW关键字)可以创建非实体类型 :
List<DTO> dtos = em.createQuery("SELECT NEW com.example.DTO( o.title, o.version) FROM Entity o").getResultList();
Run Code Online (Sandbox Code Playgroud)
DTO必须具有包含所有相关字段的构造函数.
不需要铸造.
| 归档时间: |
|
| 查看次数: |
3326 次 |
| 最近记录: |