Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向JPA实体添加其他方法_Java_Jpa - Fatal编程技术网

Java 向JPA实体添加其他方法

Java 向JPA实体添加其他方法,java,jpa,Java,Jpa,我想向我的用户实体添加方法,该方法返回其他实体的列表,该列表是用户实体中的字段,但经过筛选。问题是,当我将这样的方法添加到实体类时,我得到了一个错误 [class entities.WorksOnTask]使用非实体[class entities.User]作为关系属性[field User]中的目标实体 为什么,如何添加返回(过滤)工作区任务列表的方法I用户实体类 或者我还应该做些什么 @Entity @Table(name = "user") @XmlRootElement @NamedQu

我想向我的用户实体添加方法,该方法返回其他实体的列表,该列表是用户实体中的字段,但经过筛选。问题是,当我将这样的方法添加到实体类时,我得到了一个错误

[class entities.WorksOnTask]使用非实体[class entities.User]作为关系属性[field User]中的目标实体

为什么,如何添加返回(过滤)工作区任务列表的方法I用户实体类

或者我还应该做些什么

@Entity
@Table(name = "user")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "User.findAll", query = "SELECT u FROM User u"),
    @NamedQuery(name = "User.findByUsername", query = "SELECT u FROM User u WHERE u.username = :username"),
    @NamedQuery(name = "User.findByPassword", query = "SELECT u FROM User u WHERE u.password = :password"),
    @NamedQuery(name = "User.findByFirstName", query = "SELECT u FROM User u WHERE u.firstName = :firstName"),
    @NamedQuery(name = "User.findByLastName", query = "SELECT u FROM User u WHERE u.lastName = :lastName"),
    @NamedQuery(name = "User.findByAppPrivileges", query = "SELECT u FROM User u WHERE u.appPrivileges = :appPrivileges"),
    @NamedQuery(name = "User.findByActivated", query = "SELECT u FROM User u WHERE u.activated = :activated")})
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "Username")
    private String username;
    @Basic(optional = false)
    @Column(name = "Password")
    private String password;
    @Basic(optional = false)
    @Column(name = "FirstName")
    private String firstName;
    @Basic(optional = false)
    @Column(name = "LastName")
    private String lastName;
    @Basic(optional = false)
    @Column(name = "AppPrivileges")
    private int appPrivileges;
    @Basic(optional = false)
    @Column(name = "Activated")
    private boolean activated;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user", fetch = FetchType.LAZY)
    private List<WorksOnProject> worksOnProjectList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user", fetch = FetchType.LAZY)
    private List<WorksOnTask> worksOnTaskList;
public List<WorksOnTask> getWorksOnTaskList(){
    return worksOnTaskList;
}

public void setWorksOnTaskList(List<WorksOnTask> worksOnTaskList) {
    this.worksOnTaskList = worksOnTaskList;
}
public List<WorksOnTask> findWorksOnTaskListNonRemoved(){
    return new  ArrayList(worksOnTaskList).stream().filter((w)->!w.getRemoved()).collect(Collectors.toList());
}
@实体
@表(name=“user”)
@XmlRootElement
@命名查询({
@NamedQuery(name=“User.findAll”,query=“从用户u中选择u”),
@NamedQuery(name=“User.findByUsername”,query=“从用户u中选择u,其中u.username=:username”),
@NamedQuery(name=“User.findByPassword”,query=“从用户u中选择u,其中u.password=:password”),
@NamedQuery(name=“User.findByFirstName”,query=“从用户u中选择u,其中u.firstName=:firstName”),
@NamedQuery(name=“User.findByLastName”,query=“从用户u中选择u,其中u.lastName=:lastName”),
@NamedQuery(name=“User.findByAppPrivileges”,query=“从用户u中选择u,其中u.appPrivileges=:appPrivileges”),
@NamedQuery(name=“User.findByActivated”,query=“从用户u中选择u,其中u.activated=:activated”)}
公共类用户实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@基本(可选=假)
@列(name=“Username”)
私有字符串用户名;
@基本(可选=假)
@列(name=“Password”)
私有字符串密码;
@基本(可选=假)
@列(name=“FirstName”)
私有字符串名;
@基本(可选=假)
@列(name=“LastName”)
私有字符串lastName;
@基本(可选=假)
@列(name=“AppPrivileges”)
私人int应用权限;
@基本(可选=假)
@列(name=“已激活”)
私有布尔激活;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“user”,fetch=FetchType.LAZY)
私有列表worksOnProjectList;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“user”,fetch=FetchType.LAZY)
私有列表工作区列表;
公共列表getWorksOnTaskList(){
返回工作区列表;
}
public void setWorksOnTaskList(列表worksOnTaskList){
this.worksOnTaskList=worksOnTaskList;
}
公共列表findWorksOnTaskListNonRemoved(){
返回新的ArrayList(worksOnTaskList).stream().filter((w)->!w.getRemoved()).collect(Collectors.toList());
}
堆栈跟踪显示实体任务的错误,但一切与用户中的相同

Exception in Application start method
java.lang.reflect.InvocationTargetException     at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)     at
com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:363)
    at
com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:303)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)     at
sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start
method  at
com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:875)
    at
com.sun.javafx.application.LauncherImpl.lambda$launchApplication$147(LauncherImpl.java:157)
    at
com.sun.javafx.application.LauncherImpl$$Lambda$53/200006406.run(Unknown
Source)     at java.lang.Thread.run(Thread.java:745) Caused by: Exception
[EclipseLink-30005] (Eclipse Persistence Services -
2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while searching for
persistence archives with ClassLoader:
sun.misc.Launcher$AppClassLoader@55f96302 Internal Exception:
javax.persistence.PersistenceException: Exception [EclipseLink-28018]
(Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd):
org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [DBPU] failed.
Internal Exception: Exception [EclipseLink-7250] (Eclipse Persistence
Services - 2.5.2.v20140319-9ad6abd):
org.eclipse.persistence.exceptions.ValidationException Exception
Description: [class entities.Project] uses a non-entity [class
entities.Task] as target entity in the relationship attribute [field
iDRootTask].    at
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:127)
    at
org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactoryImpl(PersistenceProvider.java:107)
    at
org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:177)
    at
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
    at
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at pg.jpa.JpaAccessManager.<init>(JpaAccessManager.java:24)     at
pg.Login.start(Login.java:49)   at
com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$153(LauncherImpl.java:821)
    at
com.sun.javafx.application.LauncherImpl$$Lambda$56/574011920.run(Unknown
Source)     at
com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(PlatformImpl.java:323)
    at
com.sun.javafx.application.PlatformImpl$$Lambda$50/1768305536.run(Unknown
Source)     at
com.sun.javafx.application.PlatformImpl.lambda$null$164(PlatformImpl.java:292)
    at
com.sun.javafx.application.PlatformImpl$$Lambda$52/1148099840.run(Unknown
Source)     at java.security.AccessController.doPrivileged(Native Method)
    at
com.sun.javafx.application.PlatformImpl.lambda$runLater$165(PlatformImpl.java:291)
    at
com.sun.javafx.application.PlatformImpl$$Lambda$51/1146743572.run(Unknown
Source)     at
com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)  at
com.sun.glass.ui.gtk.GtkApplication.lambda$null$45(GtkApplication.java:126)
    at
com.sun.glass.ui.gtk.GtkApplication$$Lambda$42/379110473.run(Unknown
Source)     ... 1 more Caused by: javax.persistence.PersistenceException:
Exception [EclipseLink-28018] (Eclipse Persistence Services -
2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [DBPU] failed.
Internal Exception: Exception [EclipseLink-7250] (Eclipse Persistence
Services - 2.5.2.v20140319-9ad6abd):
org.eclipse.persistence.exceptions.ValidationException Exception
Description: [class entities.Project] uses a non-entity [class
entities.Task] as target entity in the relationship attribute [field
iDRootTask].    at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createPredeployFailedPersistenceException(EntityManagerSetupImpl.java:1954)
    at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:1945)
    at
org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.callPredeploy(JPAInitializer.java:98)
    at
org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactoryImpl(PersistenceProvider.java:96)
    ... 19 more Caused by: Exception [EclipseLink-28018] (Eclipse
Persistence Services - 2.5.2.v20140319-9ad6abd):
org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [DBPU] failed.
Internal Exception: Exception [EclipseLink-7250] (Eclipse Persistence
Services - 2.5.2.v20140319-9ad6abd):
org.eclipse.persistence.exceptions.ValidationException Exception
Description: [class pentities.Project] uses a non-entity [class
entities.Task] as target entity in the relationship attribute [field
iDRootTask].    at
org.eclipse.persistence.exceptions.EntityManagerSetupException.predeployFailed(EntityManagerSetupException.java:230)
    ... 23 more Caused by: Exception [EclipseLink-7250] (Eclipse
Persistence Services - 2.5.2.v20140319-9ad6abd):
org.eclipse.persistence.exceptions.ValidationException Exception
Description: [class entities.Project] uses a non-entity [class
entities.Task] as target entity in the relationship attribute [field
iDRootTask].    at
org.eclipse.persistence.exceptions.ValidationException.nonEntityTargetInRelationship(ValidationException.java:1378)
    at
org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.RelationshipAccessor.getReferenceDescriptor(RelationshipAccessor.java:553)
    at
org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.ObjectAccessor.processForeignKeyRelationship(ObjectAccessor.java:659)
    at
org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.ObjectAccessor.processOwningMappingKeys(ObjectAccessor.java:733)
    at
org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.ManyToOneAccessor.process(ManyToOneAccessor.java:123)
    at
org.eclipse.persistence.internal.jpa.metadata.MetadataProject.processOwningRelationshipAccessors(MetadataProject.java:1580)
    at
org.eclipse.persistence.internal.jpa.metadata.MetadataProject.processStage3(MetadataProject.java:1833)
    at
org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMetadata(MetadataProcessor.java:580)
    at
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:585)
    at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:1869)
    ... 21 more Exception running application pg.Login
应用程序启动方法中出现异常 java.lang.reflect.InvocationTargetException位于 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于 invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:483) com.sun.javafx.application.LaunchImpl.launchApplicationWithArgs(LaunchImpl.java:363) 在 com.sun.javafx.application.LaunchImpl.launchApplication(LaunchImpl.java:303) 位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:483) sun.launcher.launchelper$FXHelper.main(launchelper.java:767) 原因:java.lang.RuntimeException:应用程序启动时出现异常 方法在 com.sun.javafx.application.LaunchImpl.launchApplication1(LaunchImpl.java:875) 在 lambda$launchApplication$147(launchimpl.java:157) 在 com.sun.javafx.application.launchempl$$Lambda$53/200006406.run(未知 源代码)在java.lang.Thread.run(Thread.java:745)处,由以下原因引起:异常 [EclipseLink-30005](Eclipse持久性服务)- 2.5.2.v20140319-9ad6abd):org.eclipse.persistence.exceptions.PersistenceUnitLoadingException 异常描述:搜索时引发异常 使用ClassLoader进行持久化归档: sun.misc.Launcher$AppClassLoader@55f96302内部异常: javax.persistence.PersistenceException:异常[EclipseLink-28018] (Eclipse持久性服务-2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.EntityManagerSetupException 异常描述:PersistenceUnit[DBPU]的预部署失败。 内部异常:异常[EclipseLink-7250](Eclipse持久性) 服务-2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.ValidationException异常 Description:[类实体.Project]使用非实体[class] entities.Task]作为关系属性[字段]中的目标实体 iDRootTask].at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:127) 在 org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactoryImpl(PersistenceProvider.java:107) 在 org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:177) 在 persistence.persistence.createEntityManagerFactory(persistence.java:79) 在 persistence.persistence.createEntityManagerFactory(persistence.java:54) 在pg.jpa.JpaAccessManager.(JpaAccessManager.java:24)在 pg.Login.start(Login.java:49)位于 com.sun.javafx.application.launchempl.lambda$launchApplication1$153(launchempl.java:821) 在 com.sun.javafx.application.launchempl$$Lambda$56/57401920.run(未知 来源)在 com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(PlatformImpl.java:323) 在 com.sun.javafx.application.platformpl$$Lambda$50/1768305536.run(未知 来源)在 com.sun.javafx.application.PlatformImpl.lambda$null$164(PlatformImpl.java:292) 在
public List<WorksOnTask> getWorksOnTaskListNonRemoved() {
    ArrayList<WorksOnTask> wots =  new ArrayList<>(worksOnTaskList);
    wots.removeIf((w)->w.getRemoved());
    return wots;
}
public List<WorksOnTask> getWorksOnTaskListNonRemoved() {
    ArrayList<WorksOnTask> wots =  new ArrayList<>(worksOnTaskList);
    wots.removeIf(new Predicate<WorksOnTask>(){

        @Override
        public boolean test(WorksOnTask t) {
            return t.getRemoved();
        }

    });

    return wots;
}
new ArrayList<>(user.getWorksOnTaskList()).stream().....
user.getWorksOnTaskList().stream()......