如何在Hibernate / BlazeDS中管理关联实体

时间:2010-07-04 12:06:38

标签: java sql-server hibernate blazeds

我一直致力于Java / Hibernate / BlazeDS集成 - 但我很难在BlazeDS中以一对多的关系发送子实体...

对于初学者,我在MS Sql Server中有一个Client和ClientLinks表

现在客户端的java-side定义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系统插件来生成基于java版本的AS3(可能是我的问题)我想知道是否有一种旧的学校方式来做到这一点。

现在发生的事情是当我从Flex客户端调用方法Java端时,我收到了一个强类型客户端(太棒了!)但ClientLinks由mx.collections::ArrayCollection表示。我希望ClientLinks映射到我的as3 ClientLinks并访问它们,如client.clientLinks[0].linkname等等。

任何人都可以直接告诉我最好的设置方法吗?

1 个答案:

答案 0 :(得分: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));
    }

    ...
}