JPAContainer, ManyToMany isn't working

I have two entity:

public class Item {
    /* -- */
    @ManyToMany(mappedBy = "items", fetch = FetchType.EAGER)
    private Set<Order> orders;
    /* getters and setters */
}

public class Order {
    /* -- */
    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "orders_items",
        joinColumns = {@JoinColumn(name = "orderId")},
        inverseJoinColumns = {@JoinColumn(name = "itemId")})
    private Set<Item> items;
    /* getters and setters */
}

And I try to create the form for add Items to Orders. JPAContainer items = JPAContainerFactory.make(Item.class, MyVaadinUI.PERSISTENCE_UNIT); Tabel newItemTable = new Table("", items); newItemTable.setSelectable(true); newItemTable.setMultiSelect(true); /* ... */ formLayout.addComponent(newItemTable); FieldGroup fg = new FieldGroup(); fg.bind(newItemTable, "items");
But, after commiting I have got an exception

Caused by: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of Item.id
/* ... */
Caused by: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of Item.id
/* ... */
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Integer field com.hickory.models.Item.id to java.lang.Integer
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
    at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55)
    at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)
    at java.lang.reflect.Field.get(Field.java:379)

What wrong here, I have no idea, where should I check.

Ok, I realised that do like I did before is impossible (may be). And I have done with other way:

We just receive a Set of Orders from entity like that:

Item item = table.getItem(table.getValue());
Set<Order> orders = (Set<Order>) item.getItemProperty("orders").getValue();

Great, after that we can add or remove elements from the orders. And before saving just put this Set into the model (or whenever you want):

item.getItemProperty("orders").setValue(orders);

I hope that’s help to someone :slight_smile:

Didnt thought of it doing this way. Thanks for the idea.