2013-04-11 4 views
0

내 프로젝트에서 일부 모델에 문제가 있습니다. 컨트롤러 내에서 모델 (ManyToOne 관계) 내의 객체를 다음과 같이 호출합니다.모델의 홍보에 액세스 할 때 오류가 발생했습니다.

Logger.debug("my model %s", myModel.relObject); 

이렇게하면 relObject의 toString이 인쇄됩니다. 내 relObject는 다음과 같이 정의된다 :

public class RelObject GenericModel{ 
@Id 
@GeneratedValue(strategy= GenerationType.AUTO) 
@Column(name="My_ID") 

public Long myId;  

@Column(name="MY_NAME", length=24, nullable=false, unique=false) 
@Required 
@MaxSize(value=24) 
public String myName; 

public toString(){ 
    return myName; 
}  
} 

그러나 만약 그 로거이 아래 I 코드 :

Logger.debug("my model's id %s", myModel.relObject.myId); 

그것은 널을 보낸다는. 이것은 내 프로젝트의 많은 모델에서 발생합니다. 왜 내가 어떻게 해결할 수 있는지에 대한 아이디어가 있습니까?

+0

데이터/레코드를 저장하는 데 성공 했습니까? 나는 당신의 코드와 비슷한 것을 시도했지만'myModel.relObject.myId' 표현식에 대해'null' 값을 얻지 못한다. –

+0

그래, 알아 냈어. Play를 사용하면 동일한 트랜잭션에 있기 때문에이 작업을 수행 할 수 있으므로 null이 없어도 이와 같은 필드에 액세스 할 수 있습니다. 문제는 내가 그것을 어떻게 부르고 있었는지와 아무 관련이 없다. 그것은 당신의 프로젝트에서 await() 함수를 호출 할 때 어떤 종류의 버그입니다. 그것은 내가 생각하는 wierd를 컴파일합니다. –

답변

0

무엇이 잘못되었는지 전혀 이해가되지 않는 것처럼 보입니다. 게임 프레임 워크의 Controller 클래스에 버그가있는 것 같습니다. 특히 단 하나의 매개 변수 (미래 객체)를받는 await 메소드에서. 이 메서드는 Promise와 같은 Future 개체를 사용하여 다른 스레드를 작성하여 전체 응용 프로그램을 차단하지 않도록 할 때 사용됩니다.

내 프로젝트에서이 방법을 사용하면 두 번째로 프로젝트를 정리하지 않고 컴파일되고 모델에 이상한 동작이 발생할 때까지 올바르게 컴파일되지 않습니다.

스택 오버플로 및 googlecode 재생 포럼에 다른 주제를 게시하고 여기에 해당 링크를 붙여 넣습니다.

관련 문제