簡體   English   中英

作為javassist注釋成員的注釋數組

[英]Array of annotations as a javassist annotation member

我正在嘗試使用javassist動態創建以下注釋。 我找不到添加注釋數組( {@JoinColumn, @JoinColumn} )作為javassist注釋成員的方法。 任何建議?

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

以下是構建簡單注釋的一些參考。

AnnotationAttribute
動態添加注釋
運行時的注釋

我在這里回答我自己的問題。

/*
 * 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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM