【发布时间】:2011-06-25 16:04:04
【问题描述】:
我有以下函数可以构建 Hibernate Criteria 以生成分箱数据:
private Criteria getCustomBinResultCriteriaSQL(double binSizeX, double binSizeY, String xVar, String yVar, String customBinQuery) {
return createCriteria(Residue.class)
.setProjection(Projections.projectionList()
.add(Projections.sqlGroupProjection(
"floor(" + xVar + " / " + binSizeX + ") * " + binSizeX + " as xBin, " +
"floor(" + yVar + " / " + binSizeY + ") * " + binSizeY + " as yBin, " +
"CAST (" + customBinQuery + " AS DOUBLE PRECISION) as customBinResult",
"xBin, yBin",
new String[] { "xBin", "yBin", "customBinResult" },
new Type[] { Hibernate.DOUBLE, Hibernate.DOUBLE, Hibernate.DOUBLE })))
.setResultTransformer(Transformers.aliasToBean(CustomBinResult.class));
}
这对于同一个表(残差)中的数据都非常有效,但是假设我的数据结构是这样的:
条目: ID 数据库变量 exp方法: ID expvar 残留物: ID RESVARpdbentry 和expmethod 是一对一的关系,和residual 是一对多的关系。
根据上面的标准构建器,我将如何使用 expmethod 加入残差表。换句话说:我需要在标准中添加什么才能将“expvar”作为 xVar?
我尝试添加类似:
.setFetchMode("pdbentry", FetchMode.JOIN);
.setFetchMode("expmethod", FetchMode.JOIN);
最后,但我仍然无法将“expvar”或“expmethod.expvar”作为xVar。
有什么想法吗?
【问题讨论】:
标签: java hibernate join criteria