2016-12-27 26 views
1

javassistを使用して、次のアノテーションを動的に作成しようとしています。注釈の配列({@JoinColumn, @JoinColumn})をjavassistアノテーションメンバとして追加する方法が見つかりませんでした。任意の争奪?javassistアノテーションメンバとしてのアノテーションの配列

@ManyToOne 
@JoinColumns({ 
     @JoinColumn, 
     @JoinColumn 
}) 
private Parent parent; 

ここに、簡単な注釈を作成するための参考資料があります。ここで

AnnotationAttribute
Dynamically Adding annotations
Annotations at runtime

答えて

0

私は自分の質問に答えますよ。

/* 
* parentAnnotation, @JoinColumns object 
* memberName, "value" 
* memberValue, {@JoinColumn,...} object 
*/ 
public void addMemberToAnnotation(Annotation parentAnnotation String memberName, Object memberValue){ 
    if(memberValue instanceof Annotation[]){ 
     ArrayList<AnnotationMemberValue> members = new ArrayList<AnnotationMemberValue>(); 
     AnnotationMemberValue annotationValue; 
     for (Annotation a:(Annotation[])memberValue) { 
      annotationValue = new AnnotationMemberValue(cb.getCpool()); 
      annotationValue.setValue(a); 
      members.add(annotationValue); 
     } 
     ArrayMemberValue arrayValue = new ArrayMemberValue(cb.getCpool()); 
     arrayValue.setValue(members.toArray(new MemberValue[0])); 
     parentAnnotation.addMemberValue(memberName, arrayValue); 
    } else if (...){ 
     // Other cases 
    } 
} 
関連する問題