Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/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 EJB:不是已知的实体类型_Java_Web Applications_Entity_Ejb 3.0 - Fatal编程技术网

Java EJB:不是已知的实体类型

Java EJB:不是已知的实体类型,java,web-applications,entity,ejb-3.0,Java,Web Applications,Entity,Ejb 3.0,我在前面的主题(调试我的东西)中没有发现问题,因此我的问题: Java中的WebApp,使用EJB,使用实体。WebApp通过调用远程接口调用EBJ。接下来,EJB实现使用实体。这是堆栈: Caused by: java.lang.IllegalArgumentException: Object: ejbpersistance.entities.User@bfbbebb is not a known entity type. at org.eclipse.persistence.

我在前面的主题(调试我的东西)中没有发现问题,因此我的问题: Java中的WebApp,使用EJB,使用实体。WebApp通过调用远程接口调用EBJ。接下来,EJB实现使用实体。这是堆栈:

    Caused by: java.lang.IllegalArgumentException: Object: ejbpersistance.entities.User@bfbbebb is not a known entity type.
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4228)
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496)
    at ejbpersistance.dao.DaoAbstract.save(DaoAbstract.java:54)
    at ejbimpl.ejb.UserBean.createUser(UserBean.java:30)
    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 org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081)
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153)
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4786)
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608)
    at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:55)
    at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
    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.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140)
    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.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369)
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4758)
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4746)
    at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:205)
    ... 48 more
实体:

package ejbpersistance.entities;

import javax.persistence.*;

@Entity(name = "user")
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name="email", unique = true, nullable = false)
    private String email;

    @Column(name="password", unique = false, nullable = false)
    private String password;

    @Column(name="subscriber", unique = false, nullable = false)
    private Boolean subscriber;

    public User(){


    }

    public User(String email, String password) {
        this.email = email;
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Boolean getSubscriber() {
        return subscriber;
    }
}
EJB实现:

    @Override
    public boolean createUser(String mail, String password) {

        UserDao userdao = new UserDao();

        User user = new User();
        user.setEmail(mail);
        user.setPassword(password);

        userdao.save(user);

        return true;
    }
Persistence.xml:

    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="ejb-jpa">
        <class>ejbpersistance.entities.User</class>
        <class>ejbpersistance.entities.Comment</class>
        <class>ejbpersistance.entities.Article</class>
        <class>ejbpersistance.entities.User</class>
        <properties>
            <property  name="javax.persistence.jdbc.url"  value="jdbc:mysql://localhost:3306/ejb"/>
            <property  name="javax.persistence.jdbc.user"  value="root"/>
            <property  name="javax.persistence.jdbc.password"  value="root"/>
            <property  name="javax.persistence.jdbc.driver"  value="com.mysql.jdbc.Driver"/>
        </properties>
    </persistence-unit>
</persistence>

ejbperstance.entities.User
ejbperstance.entities.Comment
ejbperstance.entities.Article
ejbperstance.entities.User
用户道:

public class UserDao extends DaoAbstract<User, Integer>{
public类UserDao扩展了dao抽象{
}

摘要:

公共类抽象{

private EntityManagerFactory emf;

public EntityManagerFactory getEntityManagerFactory() {
    if(emf == null)
        emf = Persistence.createEntityManagerFactory("ejb-jpa");
    return emf;
}

Class<C> entityClass;

{
    entityClass = (Class<C>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}

public List<C> getAll() {
    emf = getEntityManagerFactory();
    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();
    List<C> object = em.createQuery("SELECT obj FROM " + entityClass.getAnnotation(Entity.class).name() + " obj")
            .getResultList();
    em.flush();
    em.getTransaction().commit();
    em.close();
    return object;
}

public C get(I id) {
    emf = getEntityManagerFactory();
    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();
    C object = em.find(entityClass, id);
    em.flush();
    em.getTransaction().commit();
    em.close();
    return object;
}

public C save(C object) {
    emf = getEntityManagerFactory();
    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();
    em.persist(object);
    em.flush();
    em.getTransaction().commit();
    em.close();
    return object;
}

public void delete(C object) {
    emf = getEntityManagerFactory();
    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();
    em.remove(em.contains(object) ? object : em.merge(object));
    em.flush();
    em.getTransaction().commit();
    em.close();
}
私有实体管理器工厂emf;
公共EntityManagerFactory getEntityManagerFactory(){
if(emf==null)
emf=Persistence.createEntityManagerFactory(“EJBJPA”);
返回电动势;
}
类实体类;
{
entityClass=(类)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
公共列表getAll(){
emf=getEntityManagerFactory();
EntityManager em=emf.createEntityManager();
em.getTransaction().begin();
List object=em.createQuery(“从“+entityClass.getAnnotation(Entity.class.name()+“obj”中选择obj”)
.getResultList();
em.flush();
em.getTransaction().commit();
em.close();
返回对象;
}
公共C获取(I id){
emf=getEntityManagerFactory();
EntityManager em=emf.createEntityManager();
em.getTransaction().begin();
C object=em.find(entityClass,id);
em.flush();
em.getTransaction().commit();
em.close();
返回对象;
}
公共C保存(C对象){
emf=getEntityManagerFactory();
EntityManager em=emf.createEntityManager();
em.getTransaction().begin();
em.persist(object);
em.flush();
em.getTransaction().commit();
em.close();
返回对象;
}
公共作废删除(C对象){
emf=getEntityManagerFactory();
EntityManager em=emf.createEntityManager();
em.getTransaction().begin();
em.remove(em.contains(object)?object:em.merge(object));
em.flush();
em.getTransaction().commit();
em.close();
}
}

少了什么?我不这么认为有什么问题吗?
谢谢大家

请显示您的UserDao。这个主题如何?我尝试过这样做,但没有成功。我尝试过@Everv0id的答案,并认识到在wildfly8.2中,尽管我将“排除未列出的类”设置为false,但我仍然需要将实体类逐个添加到persistence.xml中。