【问题标题】:How to write this SQL select in JPA JPQL?如何在 JPA JPQL 中编写此 SQL 选择?
【发布时间】:2014-02-21 05:00:46
【问题描述】:

我有一个 Table,叫它 REI_BODY,我还有一个,叫它 REI_AMT_INFO。我在 oracle pl/sql 中有一个选择:

选择 *,

  (SELECT AMT    FROM REI_AMT_INFO I WHERE I.REI_ID=T.REI_ID AND AMT_TYPE_CD = '01') AMT_01,
  (SELECT AMT    FROM REI_AMT_INFO I WHERE I.REI_ID=T.REI_ID AND AMT_TYPE_CD = '02') AMT_02,

  (SELECT SGN_CD FROM REI_AMT_INFO I WHERE I.REI_ID=T.REI_ID AND AMT_TYPE_CD = '01') SGN_01,
  (SELECT SGN_CD FROM REI_AMT_INFO I WHERE I.REI_ID=T.REI_ID AND AMT_TYPE_CD = '02') SGN_02,

FROM REI_BODY T

这是 REI_AMT_INFO 表,没有外键!

REI_ID (Number);
AMT_TYPE_CD (Varchar);
AMT (Number);
SGN_CD (Varchar);

我必须用 JPA JPQL 语言创建这个选择。我怎么能这样做?

【问题讨论】:

  • 显然 JPQL 是基于类和字段的,而您没有展示任何内容。想一想你希望任何人如何回答这个问题。当你在做的时候,告诉人们你尝试了什么以及你得到了什么结果。
  • 在不知道表名的情况下,您可以在类或 xml 中使用命名查询,我是对的。如果有错请纠正我。
  • JPQL 涉及类名、字段名……而命名查询只是将 JPQL 放在注释或 XML 中,因此您仍然需要知道类名和字段名。所有基本的 JPA 文档和 JPA 规范都揭示了这一点

标签: java sql jpa jpql


【解决方案1】:
@NamedQuery(
    name="REI_BODY",
    query="SELECT *,

  (SELECT AMT    FROM REI_AMT_INFO I WHERE I.REI_ID=T.REI_ID AND AMT_TYPE_CD = '01') AMT_01,
  (SELECT AMT    FROM REI_AMT_INFO I WHERE I.REI_ID=T.REI_ID AND AMT_TYPE_CD = '02') AMT_02,

  (SELECT SGN_CD FROM REI_AMT_INFO I WHERE I.REI_ID=T.REI_ID AND AMT_TYPE_CD = '01') SGN_01,
  (SELECT SGN_CD FROM REI_AMT_INFO I WHERE I.REI_ID=T.REI_ID AND AMT_TYPE_CD = '02') SGN_02,

FROM REI_BODY T"
)

CHECK THE LINK

【讨论】:

  • 这不是 OP 要求的“JPQL”
  • 那么请回答他的问题。
猜你喜欢
  • 2013-01-17
  • 2011-02-20
  • 2021-04-07
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 2012-05-02
相关资源
最近更新 更多