java - Hibernate 映射与 group by 子句?

标签 java sql hibernate group-by hibernate-mapping

我在 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/

相关文章:

Java运算符,解释

java - 有人可以向我解释一下 hashmap get(key) 方法的代码吗?

java - 从 Java 中的 HashMap 中删除条目

java - CSV 行拆分为数组

sql - 我的 PSQL View 表出了什么问题?

mysql - 字段列表中的列 'Hits' 不明确

java - 在读取操作中使用 Hibernate 的 StaleObjectStateException?

java - Hibernate 模式验证失败,MySQL CHAR 映射到 String

java - Hibernate - JPA - OneToMany 和 CascadeType.ALL

sql - sql server数据库中的主键数据类型