gpt4 book ai didi

JPA EntityManager TypedQuery——返回一个不同于实体模型的类(ViewModel/DTO)?

转载 作者:行者123 更新时间:2023-12-02 07:04:22 25 4
gpt4 key购买 nike

来自 Entity Framework 背景,我可以将我的 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).

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

例如在 .Net Land 中我可以做类似的事情......

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

然后将其转换为另一种类型。我尝试使用 typedquery 和强制转换,但出现“Type X is incompatible with return type Y”类型错误。

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

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

最佳答案

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

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

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

不需要类型转换。

关于JPA EntityManager TypedQuery——返回一个不同于实体模型的类(ViewModel/DTO)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14856398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com