2016-06-07 4 views
0

RestfulController 하위 클래스의 show() 메서드를 재정의하는 간단한 코드가 있습니다. 다음 코드는 Grails 2.5.4 문서의 "Implementing the 'show' action"예제에서 수정되었습니다. 일치하는 문서가 데이터베이스 (MongoDB를)에서 발견되지동적 파인더에서 Grails (저장되지 않음) == null null

def show() { 
    Coupons instance = Coupons.findByCode(params.code) 
    print("instance: ${instance}") 

    if (instance == null) { 
     render status: 404 
    } 
    else { 
     return instance 
    } 
} 

print 문은 예상대로 null 객체를 나타냅니다. 일치하는 문서 발견 경우

instance: null 

print 문은 다음을 인쇄합니다.

instance: com.example.Coupons: (unsaved) 

제 질문은 문서가 발견되면 왜이 "저장되지 않은"상태로 돌아갈까요? 그리고 더 중요한 것은 왜 객체가 정확히 존재할 때 instance == nulltrue으로 평가 되는가?

+0

변수'code'가 정의되지 않았습니다. 아마도 당신은'params.code'를 찾을 것입니다. – dmahapatro

+0

잡아 주셔서 감사합니다, @ dmahapatro. 그건 내 컨트롤러에서 전체 코드를 바꿔 쓰려고하는 오타였습니다. 나는'params.code'를 참조하기 위해 오타를 수정했습니다. –

+0

'쿠폰'도메인 클래스를 추가 할 수 있습니까? – dmahapatro

답변

0

내 도메인 클래스에 transients이 있다는 것이 문제였습니다. 내 도메인 클래스에서 transients 목록을 제거하면 문제가 해결 된 것으로 보입니다.

관련 문제