본문 바로가기

Programming!

JPA 2.0 @StaticMetamodel 사용시 @MappedSuperclass 의 문제.

버그리포트(?)에는 올려져 있으니 2.1 대에서는 처리 될 듯 하다.

@MappedSuperclass
public abstract class Attachment<T> {
    @Column(name="attach_id")
    protected String attachId;
}

@Entity
@Table(name = "review_attachment")
public class ReviewAttachment extends Attachment<ReviewAttachment> {
}

이 형태의 관계에서 기본적으로는 아마

@StaticMetamodel(ReviewAttachment.class)
public class ReviewAttachment_ {
    public static volatile SingularAttribute<ReviewAttachment, String> attachId;
}

이렇게 생각하지 싶다...


그러나, 위와 같이 사용하면 컴파일등의 문제는 없지만 NullException이 떨어질터...

Metamodel 도 extends를 해야 한다.

@StaticMetamodel(Attachment.class)
public class Attachment_ extends HiveRecord_ {
    public static volatile SingularAttribute<ReviewAttachment, String> attachId;
}

@StaticMetamodel(ReviewAttachment.class)
public class ReviewAttachment_ extends Attachment_ {

}