1

ユーザーと製品の2つのテーブルがあります。そして、ユーザーと製品の間の多対多の関係である新しいテーブルTestedProductsを自動的に作成しようとしています。ただし、このエラーが発生します。

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

残りのセッターとゲッターはスキップしました。

4

1 に答える 1

0

ユーザーエンティティで行ったのと同じ方法で、製品エンティティのユーザーを含むリストに注釈を付ける必要がありますが、反転するだけです。マップされた値が同じように処理されるとは思いません。

于 2012-06-03T15:23:18.197 に答える