Как управлять объектами ассоциации в Hibernate/BlazeDS

Я работал над интеграцией Java/Hibernate/BlazeDS, но застрял с отправкой дочерних объектов в отношениях «один ко многим» через BlazeDS...

Для начала у меня есть таблица Client и ClientLinks в MS Sql Server.

Теперь на стороне java в клиенте свойство, определяющее сущность ClientLinks,

private Set clientLinks = new HashSet(0);

На стороне AS3 установщик свойства

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 для создания AS3 на основе аналогов Java (может быть, моя проблема). Я хотел бы знать, есть ли способ старой школы сделать это.

Что происходит сейчас, так это то, что когда я вызываю сторону метода Java из гибкого клиента, я получаю строго типизированный клиент (отлично!), но ClientLinks представлены mx.collections::ArrayCollection. Я бы хотел, чтобы ClientLinks сопоставлялись с моими as3 ClientLinks и получали к ним доступ, например client.clientLinks[0].linkname и т. д. и т. д.

Может ли кто-нибудь объяснить мне, как лучше всего настроить это?


person MikeW    schedule 04.07.2010    source источник
comment
Я думаю, что это скорее вопрос о Flex/ActionScript, и его следует пометить соответствующим образом.   -  person splash    schedule 05.07.2010


Ответы (1)


Коллекции 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));
    }

    ...
}
person splash    schedule 05.07.2010