【发布时间】:2019-07-12 13:05:00
【问题描述】:
假设我有这些类,请注意实体无论如何都不相关。
@Entity
class Laptop {
@Id
String userId;
@Column
String name;
...
}
@Entity
class Foo {
...
@Column
@ElementCollection
List<String> idsPointingToAnEntity;
...
}
鉴于我有这个具有idsPointingToAnEntity 属性的Foo 类,我可以在那里存储笔记本电脑ID 列表或任何字符串ID。假设Foo 有 idsPointingToAnEntity=[1,2,3],这个 [1,2,3] 在数据库中有一个等效的笔记本电脑条目。
如果结果是按笔记本电脑名称排序的 Foo 列表,我如何才能在 JPQL 中通过排序离开加入/加入它们。
理论上我认为是这样的。
Select f From Foo f LEFT JOIN Laptop l ON l.id IN f.idsPoitingToAnEntity ORDER by l.name
但这对我来说有一个错误,因为f.idsPoitingToAnEntity 是一个联接表。
注意:idsPointingToAnEntity 也可以是另一个实体,使List<Laptop> 不是一个选项
【问题讨论】:
-
你不能在
idsPointingToAnEntity上使用@OrderColumn吗?目标表包含列name,因此@OrderColumn(name = "name")应该与@ElementCollection一起使用...示例here,检查标题“添加 OrderColumn” -
@OrderColumn 不起作用,因为它没有绑定到名称,它可以是任何实体的属性