0

嗨,我对播放框架和 JPA 很陌生。我正在创建 Web 应用程序,我需要在应用程序的模型端有 2 个类。当我运行应用程序时出现此错误:非法尝试将非集合映射为 @OneToMany、@ManyToMany 或 @CollectionOfElements:

package models;
import java.util.ArrayList;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import play.db.jpa.Model;

   @Entity

public class SubCategory extends Model{
@Column(unique = true)
public String subCatName;

@ManyToOne
public Category category;

public SubCategory(String subCatName,Category category){
    this.subCatName=subCatName;
    this.category=category;
}
}

   package models;

 import java.util.ArrayList;

 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.OneToMany;
 import org.hibernate.engine.Cascade;
 import play.db.jpa.Model;

 @Entity

  public class Category extends Model{

@Column(unique = true)
public String catName;

@OneToMany(mappedBy="category", cascade=CascadeType.ALL)
public ArrayList<SubCategory> allSubCat;

public Category(String catName){
    this.catName=catName;
    allSubCat=new ArrayList<SubCategory>();
}
}
4

1 回答 1

1

ArrayList 是接口 List 的一个实现。

您必须将您的字段定义为 List 类型,因为在引擎盖下休眠(这是 play 用于连接到数据库的 orm)不使用 ArrayList 实现,而是使用它自己的自定义实现

于 2012-12-10T06:56:11.347 回答