2010-07-04 66 views
0

我一直在研究Java/Hibernate/BlazeDS集成 - 但我們一直在跨BlazeDS發送一對多關係中的子實體...如何在Hibernate/BlazeDS中管理關聯實體

對於初學者我有一個客戶端和ClientLinks表在MS SQL Server

現在Java端在客戶端定義ClientLinks實體的屬性是

private Set clientLinks = new HashSet(0); 

在AS3方面的屬性setter被

public function set clientProfiles(value:mx.collections.ICollectionView):void { 
    const oldValue:mx.collections.ICollectionView = this._clientProfiles; 
    if (oldValue != value) { 
    this._clientProfiles = value; 
    dispatchUpdateEvent("clientProfiles", oldValue, value);    
    } 
} 

我正在使用farrata系統插件來生成基於java對應的AS3(可能是我的問題)我想知道是否有一個老派的方式來做到這一點。

現在發生的情況是,當我從Flex客戶端調用Java方法時,我收到一個強類型的Client(很棒!),但ClientLinks由mx.collections::ArrayCollection表示。我想ClientLinks映射到我的as3 ClientLinks並訪問它們,如client.clientLinks[0].linkname etc ..等。

任何人都可以設置我關於設置的最佳方式嗎?

+0

我認爲這是一個Flex/ActionScript的問題,它應該相應地標記。 – splash 2010-07-05 08:33:59

回答

0

Java集合將始終映射爲ArrayCollection。如果你想強類型的AS3集合,你應該使用包裝類:

public class ClientLinkCollection implements IList, ICollectionView 
{ 
    private var _source: ArrayCollection = null; 

    public function ClientLinks(source: ArrayCollection): void 
    { 
     if (source is ArrayCollection) 
      _source = ArrayCollection(source); 
     else 
      throw new TypeError("Invalid argument type!"); 
    }  

    public function getClientLinkItem(index: int): ClientLink 
    { 
     return ClientLink(_source.getItemAt(index)); 
    } 

    ... 
}