gpt4 book ai didi

java - JPQL 按 ElementCollection 之一排序

转载 作者:行者123 更新时间:2023-11-30 04:52:02 24 4
gpt4 key购买 nike

我有以下实体:

Article
|
+- @Id long id
|
+- @ElementCollection Map<Language, Translation> translations

Translation
|
+- @Column String name

我想要实现的是获取文章列表,按给定语言的名称排序。

类似于:

SELECT a FROM Article a 
JOIN a.translations t WHERE t.language = ?
ORDER BY t.name

问题是,当使用 t.language 时,即使翻译数据库表中存在 language 列,也会引发“无法解析属性”异常。

我怎样才能实现这种行为?

最佳答案

我认为 Hibernate 不支持这一点。我只是将翻译作为一个实体而不是嵌入实体,并在翻译实体中包含一个语言字段。

映射将是

 @OneToMany
@JoinColumn(name = "article_id")
@MapKey(name = "language")
private Map<Language, Translation> translations;

关联也可以是双向的,这样您的查询就可以更加合乎逻辑且危险性更小,因为它可以返回翻译而不是文章:

select t from Translation t 
inner join fetch t.article
where t.language = :language
order by t.name

关于java - JPQL 按 ElementCollection 之一排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9645436/

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