2011-09-13 5 views

답변

6

먼저 Id (Id)를 생성하려는 모델에서 (play.db.jpa.Model) Model을 확장하지 말고 GenericModel을 사용하십시오.

그러면 객체가 생성 될 때 (생성자에서) 호출 된 도우미 클래스를 사용할 수 있습니다. 저장할 때

또는 헬퍼 클래스를 호출

또는 경우를 (따라서 내가 래퍼 DAO를 만들 필요가 내가 개체를 저장 ID를 생성 할 수 있도록, 저장 과정은 객체가 아닌 래퍼 DAO에서 이루어집니다) JPA UUID를보다 단순한 방식으로 사용하고 싶습니다. 아래 코드를 참조하십시오.

@Entity 
public class User extends GenericModel { 
    @Id 
    @GeneratedValue(generator = "system-uuid") 
    @GenericGenerator(name = "system-uuid", strategy = "uuid") 
    public String id; 
} 
+0

GenericModel : 안티 패턴이 아닙니까? http://en.wikipedia.org/wiki/BaseBean – Kowser

+0

위키에 대한 의견과 위키의 중립성에 대해 "이 기사의 중립성은 논쟁의 여지가 있습니다"라고 부르는이 안티 - 패턴을 부적절한 것으로 간주하십시오. – indrap

+0

예, 알 수 있습니다. 문제를 명확히하기 위해 더 많이 연구해야합니다. – Kowser

5

음, Model 클래스는 모델 클래스의 @Id 속성으로 생성 된 Long을 제공하기 위해 특성, 메서드 및 주석을 추가하는 GenericModel의 하위 클래스입니다.

원하지 않는다면 대신 GenericModel을 하위 클래스로 분류하고 자신의 @Id를 제공 할 수 있습니다. 귀하의 경우에 그것은 UUID를 개최하는 문자열이 될 것입니다. 새로운 모델 인스턴스에서 초기화하기위한 전략이 필요합니다.

JPA에서 UUID를 생성하기 위해 제공하는 기본 제공 전략을 알지 ​​못합니다. 간단한 방법은 도우미 클래스를 사용하여 새 UUID를 가져 오는 메소드를 호출하고 새 모델을 만들 때마다 호출하는 방법입니다.

관련 문제