gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 06:37:38 24 4
gpt4 key购买 nike

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

当我通过 EntityManager 接口(interface)的 createNativeQuery 方法执行选择操作时,找到的第一列值会覆盖其他列值。

(例如,给定记录的第一列descricao的值为“foo”,第二个“bar”和第三个“foobar”,当我在一个对象数组中得到这个结果时(因为我还没有ORM 映射了实体),任何地方都应该填充列 descicao 的给定第二个和第三个值填充第一个的值)

我很确定那是因为我曾经使用过 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")}
)

现在按照列映射中的指定为 native 查询中的列使用别名。

"选择 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 和查询创建 native 查询。

entityManager.createNativeQuery(queryString, "DescricaoColumnAlias");

关于java - 如何使用 JPA native 查询选择具有相同名称的多个列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6180214/

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