JPA javax.persistence.metamodel.ListAttribute

JPA javax.persistence.metamodel.ListAttribute,jpa,openjpa,Jpa,Openjpa,我正在运行一个JPA测试,我在这篇文章的末尾不断得到错误。我不知道为什么会出现这个错误,但是,在JUnit中测试时没有出现这个错误。我知道这可能是一个普通的信息和一个广泛的问题,但如果有一个简单的答案,我将不胜感激 以下是我的3个类文件: package menu.entity; import static javax.persistence.CascadeType.ALL; import java.io.Serializable; import javax.persistence.*;

我正在运行一个JPA测试,我在这篇文章的末尾不断得到错误。我不知道为什么会出现这个错误,但是,在JUnit中测试时没有出现这个错误。我知道这可能是一个普通的信息和一个广泛的问题,但如果有一个简单的答案,我将不胜感激

以下是我的3个类文件:

package menu.entity;

import static javax.persistence.CascadeType.ALL;

import java.io.Serializable;
import javax.persistence.*;

import java.math.BigDecimal;
import java.util.List;

@IdClass(menu.entity.FeatureKey.class)
@Entity
@Table(name="FEATURES")
public class Feature implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(name="PROD_ID", 
        nullable = false, 
        insertable = false, 
        updatable = false,
        precision=22)
private BigDecimal prodId;

@Id
@Column(name="FEATURE", 
        nullable = false, 
        insertable = false, 
        updatable = false,
        precision=22)
private BigDecimal feature;

@Column(name="FEATURE_NAME", length=50)
private String featureName;

@Column(name="FEATURE_PATH", length=100)
private String featurePath;

@OneToMany(cascade=ALL, mappedBy="featureObj")
private List<Function> functions;

@ManyToOne
@JoinColumns({
    @JoinColumn(name="PROD_ID", referencedColumnName="PROD_ID")
    })
private Product product;

public Feature() {
}

public BigDecimal getFeature() {
    return this.feature;
}

public void setFeature(BigDecimal feature) {
    this.feature = feature;
}

public String getFeatureName() {
    return this.featureName;
}

public void setFeatureName(String featureName) {
    this.featureName = featureName;
}

public String getFeaturePath() {
    return this.featurePath;
}

public void setFeaturePath(String featurePath) {
    this.featurePath = featurePath;
}

public BigDecimal getProdId() {
    return this.prodId;
}

public void setProdId(BigDecimal prodId) {
    this.prodId = prodId;
}

public Product getProduct() {
    return product;
}

public void setProduct(Product product) {
    this.product = product;
}

public List<Function> getFunctions() {
    return functions;
}

public void setFunctions(List<Function> functions) {
    this.functions = functions;
}

}


package menu.entity;

import java.math.BigDecimal;
import javax.annotation.Generated;
import javax.persistence.metamodel.ListAttribute;
import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel;

@Generated(value="Dali", date="2012-10-01T17:03:26.750-0400")
@StaticMetamodel(Feature.class)
public class Feature_ {
public static volatile SingularAttribute<Feature, BigDecimal> prodId;
public static volatile SingularAttribute<Feature, BigDecimal> feature;
public static volatile SingularAttribute<Feature, String> featureName;
public static volatile SingularAttribute<Feature, String> featurePath;
public static volatile ListAttribute<Feature, Function> functions;
public static volatile SingularAttribute<Feature, Product> product;
}


package menu.entity;

import static javax.persistence.CascadeType.ALL;

import java.io.Serializable;
import javax.persistence.*;

import java.math.BigDecimal;
import java.util.List;


@IdClass(menu.entity.FunctionKey.class)
@Entity
@Table(name="FUNCTIONS")
public class Function implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(name="PROD_ID", 
        nullable = false, 
        insertable = false, 
        updatable = false,
        precision=22)
private BigDecimal prodId;

@Id
@Column(name="FEATURE", 
        nullable = false, 
        insertable = false, 
        updatable = false,
        precision=22)
private BigDecimal feature;

@Id
@Column(name="FUNC", 
        nullable = false, 
        insertable = false, 
        updatable = false,
        precision=22)
private BigDecimal func;

@Column(name="FUNC_NAME", length=50)
private String funcName;

@Column(name="FUNC_PATH", length=80)
private String funcPath;

@OneToMany(cascade=ALL, mappedBy="function")
private List<Task> tasks;

@ManyToOne
@JoinColumns({
    @JoinColumn(name="PROD_ID", referencedColumnName="PROD_ID"),
    @JoinColumn(name="FEATURE", referencedColumnName="FEATURE")
    })
private Feature featureObj;

public Function() {
}

public BigDecimal getFeature() {
    return this.feature;
}

public void setFeature(BigDecimal feature) {
    this.feature = feature;
}

public BigDecimal getFunc() {
    return func;
}

public void setFunc(BigDecimal func) {
    this.func = func;
}

public String getFuncName() {
    return this.funcName;
}

public void setFuncName(String funcName) {
    this.funcName = funcName;
}

public String getFuncPath() {
    return this.funcPath;
}

public void setFuncPath(String funcPath) {
    this.funcPath = funcPath;
}

public BigDecimal getProdId() {
    return this.prodId;
}

public void setProdId(BigDecimal prodId) {
    this.prodId = prodId;
}

public Feature getFeatureObj() {
    return featureObj;
}

public void setFeatureObj(Feature featureObj) {
    this.featureObj = featureObj;
}

public List<Task> getTasks() {
    return tasks;
}

public void setTasks(List<Task> tasks) {
    this.tasks = tasks;
}

}
package menu.entity;
导入静态javax.persistence.CascadeType.ALL;
导入java.io.Serializable;
导入javax.persistence.*;
导入java.math.BigDecimal;
导入java.util.List;
@IdClass(menu.entity.FeatureKey.class)
@实体
@表(name=“FEATURES”)
公共类功能实现了可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@列(name=“PROD\u ID”,
nullable=false,
可插入=错误,
可更新=false,
精度=22)
私有bigdecim prodId;
@身份证
@列(name=“FEATURE”,
nullable=false,
可插入=错误,
可更新=false,
精度=22)
私有大十进制特征;
@列(name=“FEATURE\u name”,长度=50)
私有字符串特征名;
@列(name=“FEATURE\u PATH”,长度=100)
私有字符串特征路径;
@OneToMany(cascade=ALL,mappedBy=“featureObj”)
私有列表功能;
@许多酮
@连接柱({
@JoinColumn(name=“PROD\u ID”,referencedColumnName=“PROD\u ID”)
})
私人产品;
公共特写(){
}
公共BigFeature(){
返回此.feature;
}
公共void setFeature(BigDecimal特性){
这个特征=特征;
}
公共字符串getFeatureName(){
返回此.featureName;
}
public void setFeatureName(字符串featureName){
this.featureName=featureName;
}
公共字符串getFeaturePath(){
返回此.featurePath;
}
公共void setFeaturePath(字符串featurePath){
this.featurePath=featurePath;
}
公共BigDecimal getProdId(){
返回此.prodId;
}
public void setProdId(BigDecimal prodId){
this.prodId=prodId;
}
公共产品{
退货产品;
}
公共产品(产品){
本产品=产品;
}
公共列表getFunctions(){
返回函数;
}
公共函数(列表函数){
这个函数=函数;
}
}
包菜单.entity;
导入java.math.BigDecimal;
导入javax.annotation.Generated;
导入javax.persistence.metamodel.ListAttribute;
导入javax.persistence.metamodel.SingularAttribute;
导入javax.persistence.metamodel.StaticMetamodel;
@已生成(value=“Dali”,date=“2012-10-01T17:03:26.750-0400”)
@静态元模型(Feature.class)
公共类功能{
公共静态属性prodId;
公共静态属性特征;
公共静态属性featureName;
公共静态属性特征路径;
公共静态属性函数;
公共静态属性产品;
}
包菜单.entity;
导入静态javax.persistence.CascadeType.ALL;
导入java.io.Serializable;
导入javax.persistence.*;
导入java.math.BigDecimal;
导入java.util.List;
@IdClass(menu.entity.FunctionKey.class)
@实体
@表(name=“FUNCTIONS”)
公共类函数实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@列(name=“PROD\u ID”,
nullable=false,
可插入=错误,
可更新=false,
精度=22)
私有bigdecim prodId;
@身份证
@列(name=“FEATURE”,
nullable=false,
可插入=错误,
可更新=false,
精度=22)
私有大十进制特征;
@身份证
@列(name=“FUNC”,
nullable=false,
可插入=错误,
可更新=false,
精度=22)
私有大十进制函数;
@列(name=“FUNC_name”,长度=50)
私有字符串名称;
@列(name=“FUNC_PATH”,长度=80)
私有字符串路径;
@OneToMany(cascade=ALL,mappedBy=“function”)
私有列表任务;
@许多酮
@连接柱({
@JoinColumn(name=“PROD\u ID”,referencedColumnName=“PROD\u ID”),
@JoinColumn(name=“FEATURE”,referencedColumnName=“FEATURE”)
})
私有特征对象;
公共职能(){
}
公共BigFeature(){
返回此.feature;
}
公共void setFeature(BigDecimal特性){
这个特征=特征;
}
公共BigDecimal getFunc(){
返回函数;
}
公共void setFunc(BigDecimal func){
this.func=func;
}
公共字符串getFuncName(){
返回此.funcName;
}
public void setFuncName(字符串funcName){
this.funcName=funcName;
}
公共字符串getFuncPath(){
返回此.funcPath;
}
公共void setFuncPath(字符串funcPath){
this.funcPath=funcPath;
}
公共BigDecimal getProdId(){
返回此.prodId;
}
public void setProdId(BigDecimal prodId){
this.prodId=prodId;
}
公共功能getFeatureObj(){
返回特性obj;
}
公共void setFeatureObj(功能特性Obj){
this.featureObj=featureObj;
}
公共列表getTasks(){
返回任务;
}
公共任务(列出任务){
这个。任务=任务;
}
}
问候,

保罗

以下是完整的堆栈跟踪:

java.lang.IllegalArgumentException:任何not的属性“函数” 在位于的menu.entity.Feature中找到 org.apache.openjpa.persistence.meta.AbstractManagedType.notFoundException(AbstractManagedType.java:734) 在 org.apache.openjpa.persistence.meta.AbstractManagedType.getAttribute(AbstractManagedType.java:237) 在 org.apache.openjpa.persistence.meta.AbstractManagedType.getAttribute(AbstractManagedType.java:461) 在 org.apache.openjpa.persistence.meta.MetamodelImpl.populate(MetamodelImpl.java:311) 在 org.apache.openjpa.persistence.meta.MetamodelImpl.instantiate(MetamodelImpl.java:257) 在 org.apache.openjpa.persistence.meta.MetamodelImpl.find(MetamodelImpl.java:226) 在 org.apache.openjpa.persistence.meta.MetamodelImpl.(MetamodelImpl.java:91) 在 org.apache.openjpa.persistence.EntityManagerFactoryImpl.getMetamodel(EntityManagerFactoryImpl.java:346) 在