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

对JP-QL(JPA 2.0)中的“ ElementCollection”映射字段执行“ MEMBER OF”查询

贲绪
2023-03-14
问题内容

是否可以对关联数组运行“ MEMBER
OF”查询?如果是这样,语法是什么样的?显而易见的解决方法是本机查询,但是对于所有联接等,都变得很混乱。我想测试地图的键集,值集合或条目集中是否存在对象。也许像下面这样:

SELECT p FROM Person p WHERE 'home' MEMBER OF p.phoneNumbers.keySet
SELECT p FROM Person p WHERE '867-5309' MEMBER OF p.phoneNumbers.values
SELECT p FROM Person p WHERE {'home' -> '867-5309'} MEMBER OF p.phoneNumbers

与提供者无关的代码可能要求太多。Eclipselink支持吗?


问题答案:

JPQL有一个名为的函数index(),该函数对于在@OrderColumn列表中获取索引很有用。正如您自己说的那样,映射也称为关联数组,并且映射键对应于数组索引。因此,没有什么可以阻止index()返回映射条目的键。

此查询在休眠状态下可完美运行:

SELECT p FROM Person p, in (p.phoneNumbers) number 
WHERE number = '867-5309' AND index(number) = 'home'


 类似资料:
  • 我正试图从一个联合集合中获取一个映射值,以与列表字符串进行比较。我一直有例外。 以下是我的疑问, 事实证明,在网上寻找任何JPA都是一项艰巨的任务。我找不到任何相同的东西。

  • 我有一个对象,我正试图映射到。现在这个有一个名为的枚举,其中包含一些值。我想使用将它们映射到中的其他枚举值。以下是我到目前为止的代码: 当我尝试编译它时,我得到了错误:

  • 问题内容: 我有以下枚举: 我尝试将其映射为以下日期: 但是,它引发以下异常: 如何正确映射? 问题答案: 给未来的谷歌人!最终,我设法解决了这个问题,我只需要在代码中的其他地方放置注释, 如您所见,我在getter方法之前(而不是将其放在属性声明代码之前)写了注释代码,并解决了问题,任何可以解释我原因的人都将不胜感激。谢谢

  • Navicat 会依源表或集合对字段类型和長度作出假设。你可以从下拉式菜单选择你所需的类型。 【提示】导入多个表或集合时,你可以从下拉式菜单选择其他表或集合。 如果你导入数据到现有的表或集合,你则需要手动映射源字段名到目标,或按住 Control 键并点按字段,然后选择“智慧匹配全部字段”、“按次序匹配全部字段”和“全部取消匹配”来进行快速匹配。 如果你透过 ODBC 导入,“条件式查询”按钮会打

  • 我与ModelMapper框架有麻烦。请解释为什么我看到以下行为。 我在build.gradle有以下依赖性 和一个类客户: 我还有一个地图绘制工具: 还有一个测试 在fred()中,方法输出是非红色的“Customer{name=fred,age=40}”(“Customer{name=null,age=40}”)。你能解释一下为什么吗?为什么我在第一个方法中看不到输出“George”?

  • 系统执行中地址映射的三个阶段 原理课上讲到了页映射、段映射以及段页式映射关系,但对如何建立段页式映射关系没有详说。其实,在lab1和lab2中都会涉及如何建立映射关系的操作。在lab1中,我们已经碰到到了简单的段映射,即对等映射关系,保证了物理地址和虚拟地址相等,也就是通过建立全局段描述符表,让每个段的基址为0,从而确定了对等映射关系。在lab2中,由于在段地址映射的基础上进一步引入了页地址映射,