Java 异常描述:xxx在关系属性【方法xxx】中使用非实体xx作为目标实体

Java 异常描述:xxx在关系属性【方法xxx】中使用非实体xx作为目标实体,java,jakarta-ee,persistence,Java,Jakarta Ee,Persistence,将java ee应用程序部署到weblogic server 12.x时出现此错误: [11:50:07 AM] [Deployer:149034]An exception occurred for task [Deployer:149026]deploy application habib on AdminServer.: Exception [EclipseLink-7250] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd):

将java ee应用程序部署到weblogic server 12.x时出现此错误:

[11:50:07 AM] [Deployer:149034]An exception occurred for task [Deployer:149026]deploy application habib on AdminServer.: Exception [EclipseLink-7250] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.ValidationException
Exception Description: [class net.tbse.back.inventory.salesRep.entities.SalesRepCommision] uses a non-entity [class net.tbse.back.inventory.salesRep.entities.Commission] as target entity in the relationship attribute [method getCommission]..
[11:50:07 AM] weblogic.application.ModuleException: Exception [EclipseLink-7250] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.ValidationException
Exception Description: [class net.tbse.back.inventory.salesRep.entities.SalesRepCommision] uses a non-entity [class net.tbse.back.inventory.salesRep.entities.Commission] as target entity in the relationship attribute [method getCommission].
我的佣金类别代码是:

package net.tbse.back.inventory.salesRep.entities;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.TableGenerator;

import javax.persistence.Transient;

import net.tbse.back.accounting.chartOfaccount.tree.entiteis.Account;
import net.tbse.back.inventory.salesYeas.entities.SalesYear;


@Entity
@Table(name = "COMMISSIONS")
public class Commission implements Serializable {

  private Long commissionsId;
  private Long companyId;
  private Double fromAmount;
  private Double toAmount;
  private Long percentage;
  private SalesYear salesYear;
  private Account commissionAccount;
  private String commissionAccountName;



    public Commission() {
        super();
    }

    @TableGenerator(name = "CommissionGen", table = "SEQUENCE",
                    pkColumnName = "SEQ_NAME", valueColumnName = "SEQ_COUNT",
                    pkColumnValue = "COMMISSIONS")
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "CommissionGen")
    @Id
    @Column(name = "COMMISSION_ID", nullable = false)
    public Long getCommissionsId() {
        return commissionsId;
    }

  public void setCommissionsId(Long commissionsId) {
      this.commissionsId = commissionsId;
  }

    public void setFromAmount(Double fromAmount) {
        this.fromAmount = fromAmount;
    }

  @Column(name = "FROM_AMOUNT")
    public Double getFromAmount() {
        return fromAmount;
    }

    public void setToAmount(Double toAmount) {
        this.toAmount = toAmount;
    }

  @Column(name = "TO_AMOUNT")
    public Double getToAmount() {
        return toAmount;
    }

    public void setPercentage(Long percentage) {
        this.percentage = percentage;
    }

  @Column(name = "DEF_PERCENTAGE")
    public Long getPercentage() {
        return percentage;
    }

    public void setCompanyId(Long companyId) {
        this.companyId = companyId;
    }
  @Column(name = "COMPANY_ID")
    public Long getCompanyId() {
        return companyId;
    }

    public void setSalesYear(SalesYear salesYear) {
        this.salesYear = salesYear;
    }

    @ManyToOne
    @JoinColumn(name = "SALES_YEAR_ID")
    public SalesYear getSalesYear() {
        return salesYear;
    }

  public void setCommissionAccount(Account commissionAccount) {
      this.commissionAccount = commissionAccount;
  }

  @ManyToOne
  @JoinColumn(name="COMMISSION_ACCOUNT_ID")
  public Account getCommissionAccount() {
      return commissionAccount;
  }

  public void setCommissionAccountName(String commissionAccountName) {
      this.commissionAccountName = commissionAccountName;
  }

  @Transient
  public String getCommissionAccountName() {

    if (isNullOrEmpty(commissionAccountName)) {

        if (getCommissionAccount() != null) {

            commissionAccountName = getCommissionAccount().getName();

        }
    }

      return commissionAccountName;
  }

  @Transient
  public boolean isNullOrEmpty(String s) {
      return (s == null) || s.trim().equals("");
  }
}
这是SalesRepCommission类代码:

package net.tbse.back.inventory.salesRep.entities;

import java.io.Serializable;

import java.util.HashMap;
import java.util.Map;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;

import javax.persistence.Transient;

import net.tbse.back.inventory.salesYeas.entities.SalesPeriod;
import net.tbse.back.inventory.salesYeas.entities.Target;


@Entity
@Table(name = "SALES_REP_COMMISSIONS")
public class SalesRepCommision implements Serializable {

  private Long salesRepCommissionsId;
  private SalesRep saleRep;
  private Commission commission;
  private Map<Long,Target> salesPeriodCommissions = new HashMap<Long, Target>();
  private Double fromAmount;
  private Double toAmount;



    public void setSalesRepCommissionsId(Long salesRepCommissionsId) {
        this.salesRepCommissionsId = salesRepCommissionsId;
    }

  @TableGenerator(name = "SalesRepCommisionsGenerator", table = "SEQUENCE",
                  pkColumnName = "SEQ_NAME", valueColumnName = "SEQ_COUNT",
                  pkColumnValue = "SALES_REP_COMMISSIONS")
  @GeneratedValue(strategy = GenerationType.TABLE, generator = "SalesRepCommisionsGenerator")
  @Id
  @Column(name = "SALES_REP_COMMISSIONS_ID", nullable = false)
    public Long getSalesRepCommissionsId() {
        return salesRepCommissionsId;
    }


    public void setSaleRep(SalesRep saleRep) {
        this.saleRep = saleRep;
    }

  @ManyToOne
  @JoinColumn(name = "SALES_REP_ID")
    public SalesRep getSaleRep() {
        return saleRep;
    }


    public void setCommission(Commission commission) {
        this.commission = commission;
    }

    @OneToOne
  @JoinColumn(name = "COMMISSION_ID")
    public Commission getCommission() {
        return commission;
    }

    public void setSalesPeriodCommissions(Map<Long, Target> salesPeriodCommissions) {
        this.salesPeriodCommissions = salesPeriodCommissions;
    }

@Transient
    public Map<Long, Target> getSalesPeriodCommissions() {
        return salesPeriodCommissions;
    }

    public void setToAmount(Double toAmount) {
        this.toAmount = toAmount;
    }

@Column(name = "TO_AMOUNT")
    public Double getToAmount() {
        return toAmount;
    }

    public void setFromAmount(Double fromAmount) {
        this.fromAmount = fromAmount;
    }
  @Column(name = "FROM_AMOUNT")
    public Double getFromAmount() {
        return fromAmount;
    }
}
package net.tbse.back.inventory.salesRep.entities;
导入java.io.Serializable;
导入java.util.HashMap;
导入java.util.Map;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.GeneratedValue;
导入javax.persistence.GenerationType;
导入javax.persistence.Id;
导入javax.persistence.JoinColumn;
导入javax.persistence.ManyToMany;
导入javax.persistence.manytone;
导入javax.persistence.OneToMany;
导入javax.persistence.OneToOne;
导入javax.persistence.Table;
导入javax.persistence.TableGenerator;
导入javax.persistence.Transient;
导入net.tbse.back.inventory.saleyeas.entities.salesriod;
导入net.tbse.back.inventory.saleYeas.entities.Target;
@实体
@表(name=“销售代表佣金”)
公共类SalesRepCommission实现可序列化{
私人长SalesRepCommissionId;
私人销售代表;
私人佣金;
private Map SaleriodCommissions=新HashMap();
私人双倍存款;
私用双toAmount;
public void setSalesRepCommissionId(长SalesRepCommissionId){
this.SalesRepCommissionId=SalesRepCommissionId;
}
@TableGenerator(name=“SalesRepCommissionsGenerator”,table=“SEQUENCE”,
pkColumnName=“SEQ_NAME”,valueColumnName=“SEQ_COUNT”,
pkColumnValue=“销售代表佣金”)
@GeneratedValue(策略=GenerationType.TABLE,generator=“SalesRepCommissionsGenerator”)
@身份证
@列(name=“SALES\u REP\u COMMISSIONS\u ID”,null=false)
公共长GetSalesRepCommissionId(){
返回SalesRepCommissionId;
}
公共作废setSaleRep(SalesRep saleRep){
this.saleRep=saleRep;
}
@许多酮
@JoinColumn(name=“销售代表ID”)
公共销售代表getSaleRep(){
返回saleRep;
}
公共事务委员会(委员会){
这个佣金=佣金;
}
@奥内托内
@JoinColumn(name=“佣金ID”)
公共事务委员会{
退货佣金;
}
公共无效设置salesPeriodCommissions(映射salesPeriodCommissions){
this.saleriodcommissions=saleriodcommissions;
}
@短暂的
公共地图GetSaleseriodCommissions(){
退回销售周期委托书;
}
公共无效设置装载(双装载){
this.toAmount=toAmount;
}
@列(name=“TO_AMOUNT”)
公共双getToAmount(){
返回坐骑;
}
公共作废集合fromAmount(加倍fromAmount){
this.fromAmount=from amount;
}
@列(name=“FROM_AMOUNT”)
公共双getFromAmount(){
从金额中返回;
}
}
这是persistence.xml文件:

此外,我还检查了persistence.xml,该类正确地包含在同一个包中。 编译过程成功完成并生成一个jar文件

有人能帮我吗?这里肯定有一个错误,但我找不到。

我想类佣金没有声明为@Entity。显示其代码。

显示SalesRepCommission的代码。该类佣金看起来正常。我将从persistence.xml中删除映射,并且只使用注释。