当前位置: 首页 > 面试题库 >

如何使用JPA本机查询选择多个具有相同名称的列?

索瀚海
2023-03-14
问题内容

我在通过JPA使用sql本机查询选择某些数据时遇到了一些麻烦。那是因为我有3个名称相同的列“ descricao”。

当我通过 EntityManager 接口的 createNativeQuery 方法执行select操作时,找到的第一列值将覆盖其他值。

(例如,当我在一个对象数组中得到此结果时,给定记录的第一列描述的值为“ foo”,第二个“ bar”和第三个“
foobar”(因为我尚未将ORM映射到实体),无论在何处应使用给定的列descricao的第二和第三值填充第一个值)

我非常确定,这是因为一旦在数据库上直接选择了JPA,就可以正确返回所有内容。

环境:

MySQL5; EJB 3.0;JPA 1.0;JBoss 5.0.0GA; JDK 1.6;

SQL查询:

"select p.id, p.datapedido, b.descricao, prd.descricao, s.nome,
            usuario.email, cc.chave_cupom, prd.nome,
             ca.descricao, i.produto_id, i.valoritem,
             hc.valor_utilizado, tp.datapagamento
            ..."

问题答案:

实体Bean中的标量列映射:

@SqlResultSetMapping(
      name="DescricaoColumnAlias",
      columns={@ColumnResult(name="B_DESCRICAO"),
               @ColumnResult(name="CA_DESCRICAO"),
               @ColumnResult(name="PRD_DESCRICAO")}
)

现在,按照列映射中的指定,对本机查询中的列使用别名。

“选择p.id,p.datapedido,b.descricao作为B_DESCRICAO,prd.descricao作为PRD_DESCRICAO,s.nome,usuario.email,cc.chave_cupom,prd.nome,ca.descricao作为CA_DESCRICAO,i.produto_id,i。
valoritem,hc.valor_utilizado,tp.datapagamento …”

通过指定resultSetMapping和query创建本机查询。

entityManager.createNativeQuery(queryString, "DescricaoColumnAlias");


 类似资料:
  • 我不能执行这个声明。

  • 我是JPA新手。目前,我正在编写一个带有注释的本机查询。我有一个类似下面的类 我正在编写两个查询,其中一个查询在选择投影中包含字段2,而另一个不包含字段2。如何对这两个查询使用相同的类?我尝试了瞬态注释。但它使两个查询的值都为null。

  • 问题内容: 我有一个像这样的excel文件: 如您所见,两列的标题具有相同的名称 -Name 2 。 我的问题是,是否可以告诉ADO引擎从哪一列中选择数据? 目前,我的选择如下所示: ADO从excel中的列下列出的列中提取数据。换句话说,它采用具有给定名称的第一列。不幸的是,我有两个具有相同名称的列,我想从column中提取数据。是否有可能? 我找不到任何通过其索引而不是名称来选择列的方法。 问

  • 问题内容: 我正在尝试将一个旧项目迁移到Retrofit库,并且该项目具有相当棘手的API。所以我有一个这样的查询模板: 我必须在以下模板的此处添加一些参数: 例如: 这就是API的工作方式,我无法更改。我知道我们可以将列表作为参数传递,如下所示: 但是,如何动态设置参数名称呢? 问题答案: 感谢@ILLIA DEREVIANKO(https://github.com/square/retrofi

  • 问题内容: 我有一张桌子,像这样: 我想选择具有相同基因座和染色体的所有行。例如,第3行和第4行。一次可能有2个以上,并且它们可能不是按顺序排列的。 我尝试了这个: 但是,即使重复,它总是返回第3行,从不返回第4行。我想我缺少明显而简单的东西,但我茫然。 有人可以帮忙吗? 问题答案: 您需要了解,当您在查询中包含内容时,您是在告诉SQL合并行。您将为每个唯一值获得一行。在随后过滤这些组。通常,您可

  • 假设我加载了一个具有函数本机库,并且想要加载另一个也具有函数的本机库 - 我如何以“库感知”方式查找一个(例如,在某些情况下使用中的否则使用)? 我尝试了但这似乎只是获取在加载的本机库中找到的第一个符号。 在内部类中搜索后,我发现似乎很有希望但不公开,因此我实现了一个类似的方法来查找加载的本机库: 然而,这显然是被禁止的,因为我不能从另一个类装入器装入库(我不知道最初使用的是哪个类装入器): 所以