我有以下功能建立一個Hibernate標準來生成分級數據:連接表
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));
}
這一切都工作得很好了同一個表(渣)中的數據,但是我們要說我數據結構是這樣的:
pdbentry: id pdbvar expmethod: id expvar residue: id resvar
pdbentry具有expmethod一對一的關係,並與殘基的一個一對多關係。
我怎麼會去參加與expmethod的殘基表,根據上述標準建設者。所以,換句話說:我需要什麼添加到標準能有「expvar」作爲XVAR?
我嘗試添加類似:
.setFetchMode("pdbentry", FetchMode.JOIN);
.setFetchMode("expmethod", FetchMode.JOIN);
末,但後來我還是不能把「expvar」,也不是「expmethod.expvar」作爲XVAR。
任何想法?
在這裏閱讀http://stackoverflow.com/questions/30215528/java-hibernate-projections-sqlgroupprojection-aliasing和這裏http://stackoverflow.com/questions/2345419/is-it-possible-to-get-在-SQL別名的-A-加入表-FOR-A-休眠,sqlrestricti – digz6666 2016-10-31 16:16:06