【发布时间】:2011-09-14 18:53:42
【问题描述】:
我有一个(相对)简单的 HQL 查询,它返回两个连接的实体,它们具有一对多的关系。 作为查询的结果,我想获取 entity1 类型的列表,其中 entity1.entity2 进行了映射。 因为我在结果集中得到一个笛卡尔积,对于每个 entity2(多面)我有 1 行,我得到 entity1 的重复项。 因此,如果我 list() 结果,我会得到重复的条目。
为了解决这个问题,我使用query.setResultTransformer( Criteria.DISTINCT_ROOT_ENTITY );
然而,这并不总是返回一个 rntity1 的列表,而是有时返回一个 entity2 的列表。
有没有办法指定 ResultSet 的“主要”实体?
【问题讨论】:
-
'SELECT msg FROM com.intelerad.hibernate.spike.models.Messages AS msg LEFT JOIN feetch msg.commands AS cmd WITH ( lower( cmd.status ) = \'failed\' )' 给出"with-clause not allowed on fetched associations;"
-
'SELECT msg, cmd FROM Messages AS msg LEFT JOIN msg.commands AS cmd WITH (lower( cmd.status ) = failed )' 返回错误的根实体(命令而不是消息)
标签: hibernate mapping hibernate-mapping