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

发布于 2024-09-08 00:05:17 字数 914 浏览 4 评论 0原文

我一直在研究 Java/Hibernate/BlazeDS 集成 - 但我一直在跨 BlazeDS 以一对多关系发送子实体......

中有一个 Client 和 ClientLinks 表

对于初学者来说,我在 MS Sql Server Now 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 端方法时,我收到一个强类型客户端(太棒了!),但 ClientLinks 由 mx.collections::ArrayCollection 表示。我希望 ClientLinks 映射到我的 as3 ClientLinks 并像 client.clientLinks[0].linkname 等一样访问它们。

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

I'Ive been working on Java/Hibernate/BlazeDS integrations - but am getting stuck with sending the child entities in a one-to-many relationship across BlazeDS...

For starters I have a Client and ClientLinks table in MS Sql Server

Now java-side in Client the property defining the ClientLinks entity is

private Set clientLinks = new HashSet(0);

On the AS3 side the property setter is

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);            
  }
}

I'm using a farrata systems plugin to generate the AS3 based on java counterparts (could be my problem) I'd like to know if there's an old school way to do this.

What happens now is when I invoke a method Java side from a flex client I recieve a strongly typed Client (great!) but the ClientLinks are represented by a mx.collections::ArrayCollection. I'd like the ClientLinks to map to my as3 ClientLinks and access them like client.clientLinks[0].linkname etc.. etc..

Can anyone set me straight about the best way to set this up?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拥有 2024-09-15 00:05:17

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));
    }

    ...
}

Java Collections will always be mapped as ArrayCollection. If you want strongly typed AS3 Collections you should use a wrapper class:

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));
    }

    ...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文