2011-02-11 4 views
0

나는이 비닝 데이터를 생성하기 위해 최대 절전 모드 기준을 기반으로 다음과 같은 기능이 모두 같은 테이블 (잔류) 내에서 데이터를 꽤 잘 작동가입 테이블

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와 결합하는 방법은 무엇입니까? 그래서 다른 말로하면, "xvar"로 "expvar"를 가질 수 있으려면 기준에 무엇을 추가해야합니까?

내가 좋아하는 뭔가를 추가하는 시도 : 마지막에

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

,하지만 난 여전히 xVar로 "작성된 expvar"이나 "expmethod.expvar"를 골로 연결되지 못했습니다.

아이디어가 있으십니까?

+0

여기에서 읽기 http://stackoverflow.com/questions/30215528/java-hibernate-projections-sqlgroupprojection-aliasing and here http://stackoverflow.com/questions/2345419/is-it-possible-to-get- 최대 - 절전 - 테이블 - sqlrestricti를위한 테이블의 별칭 - 별칭 - 테이블 – digz6666

답변

0

"pdbentry.expmethod.expvar"를 사용해 보셨나요?

당신이 무엇을하려고하는지 명확하지 않지만 엔티티 관계를 정의하는 방식으로 주어진 잔여 물에서 관련 expvar에 액세스하는 방법은 "residue.pdbentry.expmethod"가됩니다. .expvar ".

1

내가이이 기준 쿼리에 사용할 수 rootEntity.foreignEntity.somePropertysomeAlias.someProperty로 만드는 조인에 테이블

.createCriteria("rootEntity.foreignEntity", "someAlias") 

를 통해 앨리어싱있어 (보통 내가 "someAlias"을 선택 "foreignEntity"와 동일합니다).

저는 보통 열성적인 가져 오기를 원하기 때문에 createCriteria 호출에서 Criteria.INNER_JOIN 또는 Criteria.LEFT_JOIN이되는 경향이 있습니다.