当前位置: 首页 > 知识库问答 >
问题:

带有显式自定义类的getNamedQuery

鲜于河
2023-03-14

假设我有一个Person模型(Java类和数据库表),它有列/字段,如姓名,年龄,性别,身高,体重。

现在有2种可能

1) 我需要整列数据。。因此,我将命名查询为;

@NamedQuery(name=“Person.findAll”,query=“从Person WHERE中选择p…”

2)我只需要特定的列数据...所以我将命名查询为;

@NamedQuery(name=“Person.findSpecific”,query=“从Person WHERE中选择p.name、p.age…”

在第一种情况下,如果我调用/执行命名查询为;

Query query = getNamedQuery("Person.findAll");

它会自动将响应映射到PersonJava类。但是在第二种情况下(特定列),它不会。它将响应显示为带对象数组的向量。

我的问题是,当我使用特定的列查询时,是否有任何明确的方法使查询响应自动映射到我的自定义类

我已经试过了

Query query = getNamedQuery("Person.findSpecific",Person.class);

但这并没有将其映射到Person类。

共有1个答案

魏勇军
2023-03-14

您可以在任何JPA查询的选择子句中使用构造函数表达式:

select new my.app.PersonView(p.name, p.age) from Person p ...

在这种情况下,对于结果中的每一行,都会创建一个新的PersonView实例。

请注意,此实例未连接到数据源(它们未被管理),因此您将无法通过修改实例来更改基础数据。

这就是为什么我建议不要在构造函数表达式中使用实体类,以免将它们与“真实”实体混淆。而是编写只携带数据的自定义“传输对象”。每个投影都有一个定制类,或者——如果需要在同一个实体上有许多不同的投影——一个包含多个构造函数的更大类,用于所有投影。在这种情况下,某些字段将始终为空。

 类似资料:
  • 这是我的JSON示例: 这是我的POJO类: 但是我不知道我应该为< code>productConverter写些什么。< br >另一方面,< code>Product类中的字段有多种类型。< code >字符串和< code >整数。< br >我看了这些:https://github . com/green robot/green Dao/blob/v 3 . 1 . 1/examples

  • 我尝试开发一个小android应用程序,并显示一个对话框警报,其中只包含一个edittext,以填充自定义内容作为下一个链接 创建自定义布局我有这个代码,但它不工作 } 但是代码循环运行 我不明白 在我班上的主要活动 我有这个密码 这是我的风格。xml 我的logcat是下一个 谢谢你的帮助,

  • 问题内容: 我正在使用.NET的HttpClient向WebAPI发出请求,该WebAPI返回一些JSON数据,该数据需要在客户端进行一些自定义反序列化。为此,我已经完成了自己的工作,但是我不知道如何让该方法处理转换器的存在。 通过使用读取响应,然后将该字符串传递给,我已经解决了我的问题,但是似乎应该有一个更优雅的解决方案。 这是我的代码: 这是我所能做到的最好的,还是有一些更优雅的方法? 如果需

  • 我们正在使用spring和Spring-Security-3.2。最近,我们向RESTAPI添加了注释@preauthorize(以前是基于URL的)。 我们已经有了用-@ControllerAdvice和自定义的PermissionEvaluator注释的全局异常处理程序,除了错误消息之外,其他一切都正常工作。 是否可能抛出一个包含权限名称的异常,所以最终的错误消息应该是“Access Is d

  • 我尝试用自定义控制器制作一个自定义组件。自定义组件已经显示在应用程序上,但我未能向其添加属性。 项目结构: null 布尔马尔科 完全错误: 原因:java.lang.nullPointerException:无法调用“javafx.scene.image.imageeview.setimage(javafx.scene.image.image)”,因为“controller.topbarbtn.

  • 更新2添加名称作为字段,而不是段塞,并添加the_title()只需给我一个页面标题的回声... 更新Jonnhyd23的代码非常有效!!谢谢有没有一种方法可以使术语变得动态?就像标题是阿姆斯特丹一样,我能做一些类似于