【问题标题】:How to manage association entities in Hibernate / BlazeDS如何在 Hibernate / BlazeDS 中管理关联实体
【发布时间】:2010-07-04 12:06:38
【问题描述】:

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

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

现在在客户端的 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 系统插件来生成基于 java 对应的 AS3(可能是我的问题)我想知道是否有一种老式的方法来做到这一点。

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

谁能告诉我最好的设置方法?

【问题讨论】:

  • 我认为这是一个 Flex/ActionScript 问题,应该相应地标记。

标签: java sql-server hibernate blazeds


【解决方案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));
    }

    ...
}

【讨论】:

    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 2015-09-27
    • 2015-04-14
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2014-09-06
    相关资源
    最近更新 更多