gpt4 book ai didi

java - 相当于使用变元而不是构造函数的 NEW 运算符

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

JPQL 查询可以使用 NEW 运算符返回自定义结果对象:

  SELECT NEW myPackage.MyVO(e.fieldX, e.relationshipX.fieldY)
FROM MyEntity AS e

这对于喂养 VO 非常有用。问题是,您必须创建与查询投影的参数数量、顺序和类型完全匹配的构造函数。当您对同一个 VO 使用大量投影时,这会开始变得困惑……要么您的 VO 中有一个大的构造函数,并在查询中使用大量 NULL 文字,要么您的 VO必须有很多不同的构造函数。

所以我的问题是:JPQL 中是否有一种方法可以通过修改器而不是构造函数来设置结果对象字段?

对于具有 .NET 背景的人,我正在寻找相当于 LINQ + object initializers 的内容。 。

最佳答案

DataNucleus JPA当然支持两种实例化结果对象的方法不使用非标准注释或调用,主要是因为它还支持 JDO 并且有这样的要求:-

  1. 带有参数构造函数的结果类型(如您所说)
  2. 具有默认构造函数和 setter 的结果类型

比如

TypedQuery<MyResultType> q = em.createQuery("SELECT x AS field1, y AS field2 FROM ...", MyResultType.class);

其中 MyResultType 具有 setter “setField1”、“setField2”。

关于java - 相当于使用变元而不是构造函数的 NEW 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11093011/

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