2012-05-22 3 views
1

У меня есть две таблицы, пользователи и продукты. И я пытаюсь автоматически создать новый Table TestedProducts, который представляет собой много-много отношений между пользователем и продуктом. Однако я получаю эту ошибку.JPA ManyToMany issue

org.apache.jasper.JasperException: javax.ejb.EJBException: The bean encountered a non-application exception; nested exception is: 
<openjpa-1.2.1-r752877:753278 fatal user error> org.apache.openjpa.persistence.ArgumentException: 
"ejb.UserEntity.products<element:interface ejb.Product>" has columns with targets, but OpenJPA does not support any joins on this mapping in this context. 

UserEntity выглядит любезно.

long id; 

String firstname; 
String lastname; 
String password; 
String email; 
String description; 

List<Product> products; 

public void setId(long id){ 
    this.id = id; 
} 

@Id 
@GeneratedValue 
public long getId() { 
    return id; 
} 

@ManyToMany 
@JoinTable(name="TestedProducts", 
joinColumns= 
    @JoinColumn(name="usrId", referencedColumnName="id"), 
    inverseJoinColumns= 
    @JoinColumn(name="prodId", referencedColumnName="id") 
) 
    public List<Product> getProducts() { 
    return products; 
    } 

    public void setProducts(List<Product> products) { 
    this.products = products; 
    } 

И ProductEntity так:

long id; 

String name; 
String description; 
String type; 

List<User> users; 

@ManyToMany(mappedBy="products") 
protected List<User> getUsers() { 
    return users; 
} 

protected void setUsers(List<User> users) { 
this.users = users; 
} 

я пропустил остальную часть сеттеров и добытчиками.

ответ

0

Необходимо аннотировать список, содержащий пользователей в объекте продукта, так же, как и в пользовательской сущности, только инвертированный. Я не думаю, что значение mappedby обрабатывается одинаково.

+0

Я думаю, что это может быть проблема, havent успел ее протестировать, хотя – Zeezer