2012-12-12 2 views
2

BeanPersistListener 내 모델에 등록하고 싶지만 Ebean이나 PlayFramework에서 문서를 찾지 못했습니다. 문서에서PlayFramework, BeanPersistListener를 등록하는 방법?

:

BeanPersistListener 중 하나가 클래스 경로 검색을 통해 자동으로 발견 또는 ServerConfiguration.addEntity를 통해 프로그래밍 방식으로 추가 할 수있다().

분명히, 그것은 자동으로 찾을 수 없습니다 (I은 구현 방법에 약간의 Logger.info을 추가하고, 아무것도 표시되지 않았다), 그래서 어떻게 Server 구성에 통해를 추가 할 수 있지만 싶습니다? 어디에?

나는 버전 문제라고 생각합니다. 내가 본 것에서 BeanPersistListener는 Ebean 2.6.0에서 왔지만, Ebean PlayFramework의 버전이 실행 중인지 찾을 수 없습니다 (2.0.4를 사용하고 있습니다).

도움이 될 것입니다.

감사합니다 :)

답변

3

먼저 플레이 2.0.4 Ebean 버전 2.7.3 [1]

를 사용하여 리스너를 등록 해,이 documentation 같이 ServerConfigStartup를 사용을 시도 할 수 있습니다 :

package models; 

import com.avaje.ebean.config.ServerConfig; 
import com.avaje.ebean.event.ServerConfigStartup; 
import com.avaje.ebean.event.BeanPersistListener; 

public class MyServerConfigStartup implements ServerConfigStartup { 
    @Override 
    public void onStart(ServerConfig serverConfig) { 
     serverConfig.add(new BeanPersistListener() { 
      .... 
     }); 
    } 
} 
나는 그것을 테스트하지

, 나는 그것이 COMME에서

업데이트 :-) 해볼만 한 가치라고 생각합니다 국세청 :

당신은 Ebean 그들을 찾을 수 있도록 models 패키지 또는 models 패키지의 자식에서 이러한 클래스를 넣어해야합니다.

+0

굉장! Ebean 버전 및 링크 +1. 나는 그 때 당신의 대답을 받아들이려고 노력할 것이다. (또는 내가 그것을 만들 수 없다면 논평한다.) –

+1

Soooo 나는 당신의 코드를 추가했다. 재미있는 일은 모델 패키지에서만 실행됩니다 (처음에는 다른 곳에서 추가했습니다). 내가 듣기 위해 등록 된 모델을 나타내는 Logger.info를 추가했기 때문에 알아. Listener 클래스에서 Logger.info를 각 구현 된 메서드에 추가했습니다. 하지만 내가 (삽입/업데이트/삭제)라고 부르면 아무것도 기록되지 않으므로 호출되지 않습니다. 왜 그런가? –

+1

그게 다야! 나는 이유를 안다. 리스너와 ConfigStartup 클래스를'models' 패키지 (또는'models' 패키지의 자식 **, ** 리스너를 포함하여 **)에 넣어야합니다. 지금 작동합니다 :) –

0

나는 플레이 프레임 워크에 BeanPersistListener있는 두 가지 문제를 참조하십시오

  1. 내가 모든 개체 자신의 BeanPersistListener을 위해 작성해야합니다. 내가 100의 enities를 가지고 있으면 좋지 않다.

  2. BeanPersistListener가 백그라운드 스레드에서 시작됩니다. 나는 사용자 인 정보가 없다.

관련 문제