2014-04-29 3 views
1

내 도메인 클래스에 투영과 함께 명명 된 쿼리를 사용하고 있습니다. 나는 다음 식 사용하여 값 중 하나를 반환하는 명명 된 쿼리를 싶습니다 : 나는 매핑 공식 익숙GRAILS 2.3.x의 명명 된 쿼리에서 투영법을 사용할 때보다 복잡한 계산을 수행하려면 어떻게해야합니까?

sum(x * y)/sum(y) 

을하고 다음을 수행하려고 시도 :

def formVar 

static mapping = {  
    formulaVar formula: 'sum(x * y)/sum(y)' 
} 

것은 여기에 어떤 도움이 될 것이다 굉장해.

답변

1

확인에 설명되어 있습니다. 다음과 같이 작동합니다.

class SumThing { 
    Double sumVar 

    static namedQueries = { 
     sums { op -> 
      projections { 
       property "sumVar" 
      } 
     } 
    } 

    static mapping = { 
     version false 
     columns { 
      sumVar formula: 'SUM(X * Y)/SUM(Y)'//X and Y being actual column names from your database 
     } 
    } 
} 
1

귀하의 질문에 대한 오해가있을 수 있지만 beforeUpdate 및 beforeInsert 이벤트를 확인하시기 바랍니다.

이 블록에 삽입 된 코드를 사용하면 삽입/업데이트하기 전에 계산을 수행하고 도메인 클래스 속성을 조작 할 수 있습니다.

그것은 여기에 Grails의 수동 http://grails.org/doc/2.3.7/guide/GORM.html#eventsAutoTimestamping

+0

나는 다시 질문을했습니다. 명명 된 쿼리를 나열 할 때 해당 수식을 사용하여 데이터를 반환해야합니다. 그래서 이것을하기 위해 투영법을 사용했지만 문서에 위의 공식 I가 포함 된 투영법을 어떻게 리턴 할 수 있는지는 알 수 없습니다. – cujo37