gpt4 book ai didi

java - HQL 查询从 @ElementCollection 获取字段

转载 作者:行者123 更新时间:2023-12-02 05:03:55 27 4
gpt4 key购买 nike

我正在尝试构建一个 HQL 查询以从 @ElementCollection 中提取属性:

public class Resource {
@Id
private String name;

@ElementCollection()
@CollectionTable(
name = "property",
)
@SortNatural
private final SortedMap<String, String> properties =
Maps.newTreeMap();
}

property 表使用默认列名称(propertiesproperties_key)来存储数据(使用外键返回到我的资源表)。

我有以下 HQL 查询,我试图返回键和值。

final Query q = session.createQuery("select new list(r.name, elements(r.properties)) from Resource r where r.name like :nameFilter");

这是有效的,当我调用q.list()时,我得到一个包含名称和值的对象列表。我遇到的问题是我无法弄清楚如何获取与值关联的键。即 properties_key 列中的数据。

我尝试过的事情:

  1. 元素(r.properties_key)
  2. 元素(r.propertiesKey)
  3. 元素(r.key)

这些都不起作用。

这个数据可以取出来吗?如何找出要在 HQL 查询中使用的属性名称?

最佳答案

加入集合,然后使用index()获取 key 。
index(p) 是键,p 是值。

List list = currentSession.createQuery(
"select new list(s.id, index(p), p) from Resource s join s.properties p").list();

关于java - HQL 查询从 @ElementCollection 获取字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27987117/

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