Как управлять объектами ассоциации в Hibernate / BlazeDS - PullRequest
0 голосов
/ 04 июля 2010

Я работал над интеграцией Java / Hibernate / BlazeDS - но я застреваю с отправкой дочерних сущностей в отношениях один-ко-многим через BlazeDS ...

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

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

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

1 Ответ

0 голосов
/ 05 июля 2010

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

    ...
}
...