2015-10-06 47 views
3

我已經爲構建服務器集成分配了Atlassian Stash插件,並且它使用ActiveObjects組件來存儲數據。我有以下問題:ActiveObject在爲數組添加setter時引發異常

如果我跟隨其他領域,並添加一個getter和setter我一對多領域這樣

@OneToMany 
TestMapping[] getTestMapping(); 
void setTestMapping(TestMapping[] powerMappings); 

當使用我得到下面的異常實體:

[INFO] [talledLocalContainer] Caused by: java.lang.RuntimeException: Unrecognized type: [Lsome.package.TestMapping; 
[INFO] [talledLocalContainer] at net.java.ao.types.TypeManager.getType(TypeManager.java:68) ~[na:na] 
[INFO] [talledLocalContainer] at net.java.ao.schema.SchemaGenerator.getSQLTypeFromMethod(SchemaGenerator.java:481) ~[na:na] 

谷歌搜索的問題,只找到瞭解決辦法去除二傳手就像在建議this post。但是,如果配置已經存在,則可以設置該字段。我不認爲刪除一個ActiveObject並保存一個新的是這裏的方法。

如何解決這個問題?或者如果這是不可能的,如何更新現有對象而不使用ActiveObject中的setter?

回答

0

我跟隨Active Objects的方法就是這樣。當你有一些實體,A,其中有許多其他實體,B,每個B對象只有的A一個,我加入這些片段:

A類:

... 

@OneToMany 
B[] getBs(); 

... 

,並在類B

... 

A getA(); 
void setA(A a); 

... 

注意,沒有在類B添加方法中的任何註釋,並且沒有任何添加二傳手我在A級,這是在「一對多」關係的「一個」方面。這種方法對我來說總是有效的。如果你添加一個不在這裏的方法,你添加了一個我在這裏沒有使用的註釋,或者你錯過了將@OneToMany放在正確的位置,那麼你通常會得到一個無法識別的類型異常。我知道這很令人沮喪,因爲這個異常只會讓你知道你的實體接口沒有很好的構造,但它不會讓你知道問題是什麼或者它在哪裏。試着複製我的方法。希望能幫助到你。