【问题标题】:Joining tables using criteria and sqlProjection使用条件和 sqlProjection 连接表
【发布时间】: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 RESVAR

pdbentry 和expmethod 是一对一的关系,和residual 是一对多的关系。

根据上面的标准构建器,我将如何使用 expmethod 加入残差表。换句话说:我需要在标准中添加什么才能将“expvar”作为 xVar?

我尝试添加类似:

.setFetchMode("pdbentry", FetchMode.JOIN);
.setFetchMode("expmethod", FetchMode.JOIN);

最后,但我仍然无法将“expvar”或“expmethod.expvar”作为xVar。

有什么想法吗?

【问题讨论】:

标签: java hibernate join criteria


【解决方案1】:

我正在通过

为加入的表起别名
.createCriteria("rootEntity.foreignEntity", "someAlias")

这使得rootEntity.foreignEntity.someProperty 可作为someAlias.someProperty 用于条件查询(通常我选择“someAlias”与“foreignEntity”相同)。

由于我通常想要一个急切的获取,我倾向于在 createCriteria 调用上也有 Criteria.INNER_JOINCriteria.LEFT_JOIN

【讨论】:

    【解决方案2】:

    你试过“pdbentry.expmethod.expvar”吗?

    目前尚不清楚(对我而言)您要从这里做什么,但是您定义实体关系的方式,从给定残基访问相关 expvar 的方式将是“residue.pdbentry.expmethod。 expvar”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2014-01-02
      相关资源
      最近更新 更多