【问题标题】:Retrieving Records with Multiple keys. OPENJPA使用多个键检索记录。 OPENJPA
【发布时间】:2023-04-10 06:50:01
【问题描述】:

在我所知道的语言上,RPG...您可以使用多个键并查找检索记录的值。

喜欢桌子。我可以选择键 lolo 和 apple 来检索性女巫的值是 F。Howerver 我在 OPENJPA 中找不到类似这样的功能.. find() 只能使用一个键?是否有类似 find(names.class,:"LOLO","Apple") 的键是 F_NAME 和 L_NAME 的东西?

Names
F_NAME   L_NAME   Sex
LOLO     Apple     F

Ben      Coke      M

读取jpa时,通常表有P_ID

P_ID     F_NAME  L_NAME  Sex
1        LOLO     Apple   F 
2        Ben      Coke    M

要检索记录 lolo apple,我需要使用此代码..

Names name = em.find(Names.class, 1);

如果给定值是 F_NAME,您将如何知道性别?和 L_NAME?在 SQL 中,您只需说 select * from Names where F_NAME = Lolo , L_NAME = "Apple" 就会输出

P_ID     F_NAME  L_NAME  Sex
1        LOLO     Apple   F 

由此你可以说 Sex = F。 就像我想知道lolo apple是男是女一样,我会在数据库中搜索lolo apple...不是P_ID = 1。我怎么知道lolo Apple的P_ID是什么。

希望你明白我的意思。谢谢。

或者也许在等式的另一部分,在 JPA 上,您如何在不知道 P_ID(主键)的情况下检索要更新的记录,就像您只知道名字和姓氏一样?

【问题讨论】:

  • 我在示例中看到的是

标签: sql jakarta-ee jpa openjpa rpgle


【解决方案1】:

如果您查看OpenJPA documentation ,它定义了一种 JPA 查询语言 [JPQL]。那不是开始的地方吗?


更新

如果你想指定几个键值,为什么不像在 SQL 中那样在 JPQL 的 WHERE 子句中指定它们。

SELECT ...
  WHERE colX = val1 and colY = val2 and colZ = val3

【讨论】:

  • @wattenT 你的意思是 find() 方法只允许一个键?女巫是首要的?所以如果我的键像名字和姓氏.. 没有办法使用 find(class,firstname, lastname) 来检索它.. 你需要做 jpql 然后 find(class,P_ID) 来填充实体?跨度>
  • 您是否熟悉 SQL,例如可以嵌入到您的 RPG 程序中?在我看来,JPQL 是相似的。我想 JPA 设计的意图是您将它与 JPQL 一起使用,与 RPG 中的嵌入式 SQL 相同,而不是模仿 RPG 原生 I/O。但是,这仅基于对文档的粗略概述,我没有直接的经验,因此请进一步验证。我没有深入研究 JPQL 的工作原理,或者在 DB2 for i 上使用它是否有任何问题。
  • 是的,我也在 rpg 中使用 sql。我只是想知道它们是否是 JPA 中与 RPG 中的 CHAIN() 相关的方法,您可以在其中使用许多键并将其放在键列表中.然后从他们那里,可以检索一条记录。publib.boulder.ibm.com/infocenter/iadthelp/v7r0/…也许我只需要使用 JPQL 来检索记录,然后使用 find() 填充实体,然后使用 merge() 来更新 da 记录。
  • 我的意思是CHAIN 似乎不是解决这个问题的预期心态。我的印象是,人们会使用 JPQL 来选择您选择的任何“键”,在这个实体框架中打开一个记录集。然后处理记录集的内容。
  • 啊好吧...这就是您在 OPENJPA 中所做的。非常感谢。我会按照你的建议去做。
猜你喜欢
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 2021-03-04
  • 2016-03-31
相关资源
最近更新 更多