[Flex] [GraniteDS] Ошибка стороны Flex: не получено подтверждающее сообщение - PullRequest
0 голосов
/ 11 августа 2010

У меня есть эта ошибка, когда я пытаюсь загрузить список «Продукт» в простой DataGrid:

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

После нескольких тестов я почти уверен, что теперь это проблема с отображением, и, поскольку я не привык к аннотациям, возможно, это происходит отсюда, вот мои классы:

Product.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...
}

Client.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...
}

Buy.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 и Name, связь между Product и Category является однонаправленной, реальная проблема заключается в том, что когда я пытаюсь получить мои Продукты из базы данных, возникает эта ошибка, и, как я уже сказал, я Я почти уверен, что это происходит из-за ошибки отображения / аннотации ...

Спасибо.

1 Ответ

1 голос
/ 11 августа 2010

Проблема в том, что вы, вероятно, нигде не ссылаетесь на класс Buy.as в вашем приложении Flex, поэтому компилятор Flex не включил его в swf, что привело к этой ошибке ArgumentError во время десериализации. Быстрый способ проверить это - добавить фиктивную переменную в ваш mxml: приватная статическая переменная типа dummy: Buy = null;

Более подробное объяснение вы найдете здесь .

...