【问题标题】:Entity throw no method exception实体不抛出方法异常
【发布时间】:2026-02-06 02:50:02
【问题描述】:

我正在构建一个简单的 JavaEE 项目,但我不断收到 NoMethodFoundException:Faculty._persistence_set_customers(Customer)。

教师实体与客户实体具有一对多关系。当我删除这种关系时,异常消失了。这可能是什么原因?为什么要这个方法?

异常如下:

Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: An internal error occurred while accessing method [_persistence_set_customers] on class [class hb.model.entity.Faculty].
Internal Exception: java.lang.NoSuchMethodException: hb.model.entity.Faculty._persistence_set_customers(hb.model.entity.Customer)
Descriptor: RelationalDescriptor(hb.model.entity.Faculty --> [DatabaseTable(USERS)])
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl$1.handleException(EntityManagerSetupImpl.java:692)
    at org.eclipse.persistence.transaction.AbstractSynchronizationListener.handleException(AbstractSynchronizationListener.java:275)
    at org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:170)
    at org.eclipse.persistence.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:68)
    at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:452)

Faculty实体源码如下:

package hb.model.entity;

import java.io.Serializable;
import java.util.ArrayList;
import javax.persistence.Entity;
import javax.persistence.OneToMany;

/**
 *
 * @author hasee
 */
@Entity
public class Faculty extends Users implements Serializable {

    private static final long serialVersionUID = 1L;

    @OneToMany(mappedBy = "faculty")
    private ArrayList<Customer> customers;

    private String position;

    public Faculty() {
    }

    public ArrayList<Customer> getCustomers() {
        return customers;
    }

    public void setCustomers(ArrayList<Customer> customers) {
        this.customers = customers;
    }



    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

}

非常感谢,

【问题讨论】:

    标签: entity eclipselink jpa-2.0 java-ee-7


    【解决方案1】:

    在检查了一些示例代码后:我意识到与 OneToMany 或 ManyToMany 相关的所有关系都使用 List 而不是 ArrayList。进行此更改后,应用程序运行良好,但原因仍然未知。

    【讨论】: