我正在使用带有 MySQL 数据库的 Hibernate 3(我尝试使用 Hibernate 4,但没有更多成功)。我已经实现了一个 table-per-concrete-class 继承策略(联合子类)。
除了多态查询之外,它完成了这项工作。Hibernate 生成一个基于 UNION 的查询,其中“where”子句位于高级查询中:
select primKey, param1, param2 from (
select primKey, param1, param2 from Concrete1
union
select primKey, param1, param2 from Concrete2
)
where primKey == <value>
order by param1
limit 100
当加载整个具体表内容时,这会导致性能非常差,而因为 pkey 是抽象父级的属性,所以可以在子选择中定义“where”子句。
所以目标是让 Hibernate 生成这种查询:
select primKey, param1, param2 from (
select primKey, param1, param2 from Concrete1 where primKey == <value>
union
select primKey, param1, param2 from Concrete2 where primKey == <value>
)
order by param1
limit 100
这样,查询会立即执行。
知道如何配置 Hibernate 来改变这种行为吗?
谢谢
Y。