0

当我尝试在简单的 DataGrid 中加载“产品”列表时出现此错误:

Didn't receive an acknowledge message
Was expecting mx.messaging.messages.AcknowledgeMessage, but received null

经过几次测试,我现在很确定这是一个映射问题,而且我不习惯注释,也许它来自这里,这里是我的类:

产品.java:

@Entity
@Table(name="product")
public class Product implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="product_id")
    private long productId;

    private String name;

    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    @JoinColumn(name="category_id")
    private Category category;

    @OneToMany(mappedBy = "product", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private Collection<Buy> clients;

    ...Getters & Setters...
}

客户端.java

@Entity
@Table(name="client")
public class Client implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="client_id")
    private long clientId;

    private String name;

    @OneToMany(mappedBy = "client", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private Collection<Buy> products;

    public long getClientId() {
        return clientId;
    }

    public void setClientId(long clientId) {
        this.clientId = clientId;
    }

    ...Getters & Setters...
}

购买.java

@Entity
@Table(name="buy")
public class Buy implements Serializable
{
    @EmbeddedId
    private BuyId buyId;

    @ManyToOne
    @PrimaryKeyJoinColumn(name="product_id", referencedColumnName="product_id")
    private Product product;

    @ManyToOne
    @PrimaryKeyJoinColumn(name="client_id", referencedColumnName="client_id")
    private Client client;

    @Temporal(value = TemporalType.DATE)
    private Date date;

    ...Getters & Setters...
}

BuyId.java

public class BuyId implements Serializable
{
    private long clientId;

    private long productId;

    ...Getters & Setters...
}

类别无关紧要,因为只有一个 Id 和一个名称,产品和类别之间的关联是单向的,真正的问题是当我尝试从数据库中检索我的产品时,会发生此错误,正如我所说,我几乎肯定它来自映射/注释错误......

谢谢。

4

1 回答 1

1

问题是您可能没有在 Flex 应用程序的任何地方引用类 Buy.as,因此 Flex 编译器没有将它包含在 swf 中,从而导致反序列化期间出现此 ArgumentError。检查这一点的一种快速方法是在您的 mxml 中添加一个虚拟变量: private static var dummy:Buy = null;

您将在此处找到更详细的说明。

于 2010-08-11T09:28:51.183 回答