【发布时间】:2012-01-05 16:21:28
【问题描述】:
假设我有一个实体MyEntity,它有一个基于公式的属性fmlaProp。现在说我创建一个标准:
s.createCriteria(MyEntity.class)
.setProjection(
Projections.distinct(
Projections.property("fmlaProp")))
.addOrder(Order.asc("fmlaProp"));
在这种情况下,我得到以下 SQL:
SELECT DISTINCT fmlaProp-sql FROM MY_ENTITY_TABLE ORDER BY fmlaProp-sql
这在 Oracle 上给出了一个错误,即未选择 order-by 表达式。然后我尝试了以下标准:
s.createCriteria(MyEntity.class)
.setProjection(
Projections.distinct(
Projections.alias(
Projections.property("fmlaProp"),
"alias1"))
.addOrder(Order.asc("alias1"));
这会生成“按别名 1 排序”,效果很好。但这有点难看——代码必须“知道”那些公式属性,这违反了“一次编写”原则。对此有什么想法或建议吗?提前谢谢你。
【问题讨论】:
-
-sql部分是什么?
标签: oracle hibernate hibernate-criteria