我在 pojo 中有 @OneToMany
映射,我需要按列对结果列表进行分组。我有一个如下所示的映射;
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "X", referencedColumnName = "X", insertable = false, updatable = false)
@NotFound(action = NotFoundAction.IGNORE)
@Fetch(FetchMode.SELECT)
public Set<MyType> getSiblings() {
return siblings;
}
我需要向此映射添加 GROUP BY
子句,这可能吗?
最佳答案
我认为您正在寻找的是对映射到多重映射的支持,这是一个具有一个键的映射,值是所有与同一键关联的值的列表。
Hibernate 不支持此功能,这是 thread在他们的论坛中尝试实现它。
另一种方法是仍然在属性级别映射到 Set,然后提供一个 getter 来动态进行分组。这对于消费者来说是透明的,并且只会成为非常大的数据集的问题:
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "X", referencedColumnName = "X", insertable = false, updatable = false)
@NotFound(action = NotFoundAction.IGNORE)
@Fetch(FetchMode.SELECT)
private Set<MyType> siblings;
public Map<String,List<MyType>> getSiblings() {
... do the grouping manually in Java ...
}
关于java - Hibernate 映射与 group by 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22815010/