2013-12-13 36 views
0

我已被編程在Whiich使用2個模型類JavaFX應用程序:EJB,JavaFX的PU java.lang.IllegalArgumentException異常:對象:[email protected]不是已知的實體類型

package model; 

import java.io.Serializable; 
import java.util.ArrayList; 
import javax.persistence.CascadeType; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.OneToMany; 


@Entity 
public class Person implements Serializable{ 

@Id 
@GeneratedValue(strategy= GenerationType.AUTO) 
private Long id; 
@OneToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE}, 
      fetch=FetchType.EAGER, mappedBy="Person") 
private ArrayList<Produkt> products= new ArrayList<Produkt>(); 
public Long getId() { 
    return id; 
} 

public void setId(Long id) { 
    this.id = id; 
} 
private String email; 
private String firstName; 
private String lastName; 

private String tel; 
private String kleurCode; 
private String facebook; 

public Person() { 
    super(); 
} 

public Person(String firstName, String lastName, String email,String tel, String facebook, String kleurCode) { 
    setFirstName(firstName); 
    setLastName(lastName); 
    setEmail(email); 
    setFacebook(facebook); 
    setTel(tel); 
    setKleurCode(kleurCode); 
} 

public ArrayList<Produkt> getProducts() { 
    return products; 
} 

public void setProducts(ArrayList<Produkt> products) { 
    this.products = products; 
} 

public void setFacebook(String tel) 
{ 
    this.facebook=tel; 
} 
public String getFacebook() { 
    return facebook; 
} 
public void setKleurCode(String tel) 
{ 
    this.kleurCode=tel; 
} 
public String getKleurCode() { 
    return kleurCode; 
} 
public String getTel() 
{ 
    return tel; 
} 
public void setTel(String tel) 
{ 
    this.tel=tel; 
} 
public String getFirstName() { 
    return firstName; 
} 

public void setFirstName(String fName) { 
    firstName=fName; 
} 

public String getLastName() { 
    return lastName; 
} 

public void setLastName(String fName) { 
    lastName=fName; 
} 

public String getPrimary() { 
    return getEmail(); 
} 

public String getSecondary() { 
    return getEmail(); 
} 

public String getEmail() { 
    return email; 
} 

public void setEmail(String fName) { 
    email=fName; 
} 
} 

package model; 

import java.io.Serializable; 
import javax.persistence.CascadeType; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.ManyToOne; 

@Entity 
public class Produkt implements Serializable { 
String naam; 
@Id 
@GeneratedValue(strategy= GenerationType.AUTO) 
private Long id; 


@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE}, 
             fetch=FetchType.EAGER) 
private Person person; 

public Person getPerson() { 
    return person; 
} 

public void setPerson(Person person) { 
    this.person = person; 
} 




public Produkt() { 
    super(); 
} 
public Produkt(Person p, String naam){ 
    p=p; 
    naam=naam; 
}; 

public String getNaam() { 
    return naam; 
} 

public void setNaam(String naam) { 
    this.naam = naam; 
} 



public Long getId() { 
    return id; 
} 

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

那麼我此門面類:

package facade; 


    import java.util.List; 
    import javax.persistence.EntityManager; 
    import javax.persistence.EntityManagerFactory; 
    import javax.persistence.Persistence; 
    import javax.persistence.PersistenceContext; 
    import javax.persistence.Query; 
    import model.Person; 
    import model.Produkt; 

    public class Facade { 

    @PersistenceContext(unitName = "EJBModuleDAPU") 
    private EntityManager em; 


    public Facade() 
    { 
    em=getEntityManager(); 
} 

public void createPerson(Person p) { 
    if(em!=null){ 
     em.persist(p); 
    } 
    else 
    { 
     System.out.println("EM was null"); 
    } 
} 

public void createProduct(Produkt p) { 
    em.persist(p); 
} 

public void editProduct(Produkt p) { 
    em.merge(p); 

} 

public void editPerson(Person p) { 
    em.merge(p); 

} 

public void removePerson(Person p) { 
    em.remove(em.merge(p)); 
} 

public void removeProduct(Produkt p) { 
    em.remove(em.merge(p)); 
} 

public Person findPerson(Object id) { 
    return em.find(Person.class, id); 
} 

public Produkt findProduct(Object id) { 
    return em.find(Produkt.class, id); 
} 

public List<Person> findAllPerson() { 
    Query query = em.createQuery("SELECT m from Person as m"); 
    return query.getResultList(); 
    /*System.out.println(em.toString()); 
    javax.persistence.criteria.CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); 
    cq.select(cq.from(Person.class)); 
    return em.createQuery(cq).getResultList();*/ 
} 

public List<Person> findAllProdcut() { 
    javax.persistence.criteria.CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); 
    cq.select(cq.from(Produkt.class)); 
    return em.createQuery(cq).getResultList(); 
} 

protected EntityManager getEntityManager() { 
EntityManagerFactory emf = Persistence.createEntityManagerFactory("EJBModuleDAPU"); 
EntityManager ecm = emf.createEntityManager(); 
return ecm; 
} 
} 

這裏是我的執着單位:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="EJBModuleDAPU" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>jdbc/__default</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <shared-cache-mode>NONE</shared-cache-mode> 
    <validation-mode>NONE</validation-mode> 
    <properties> 
     <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

應用程序運行,但是當我做了LO okup(),並嘗試添加聯繫人或得到所有的列表:

WORK 
javax.ejb.EJBException 
file:/Users/Verdonckt/NetBeansProjects/JavaFXApplicationDa/dist/run298548326/JavaFXApplicationDa.jar!/javafxapplicationda/Sample.fxml 
    at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5215) 
    at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5113) 
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4901) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2045) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1994) 
    at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:213) 
    at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:79) 
    at com.sun.proxy.$Proxy199.voegToePerson(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:144) 
    at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:174) 
    at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:528) 
    at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:199) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1624) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1486) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:990) 
    at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:214) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:742) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:539) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2324) 
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497) 
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540) 

Exception in Application start method 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.javafx.main.Main.launchApp(Main.java:698) 
    at com.javafx.main.Main.main(Main.java:871) 
Caused by: java.lang.RuntimeException: Exception in Application start method 
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403) 
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47) 
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115) 
    at java.lang.Thread.run(Thread.java:744) 
Caused by: javax.ejb.EJBException 
    at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5215) 
    at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5113) 
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4901) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2045) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1994) 
    at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:213) 
    at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:79) 
    at com.sun.proxy.$Proxy199.voegToePerson(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:144) 
    at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:174) 
    at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:528) 
    at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:199) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1624) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1486) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:990) 
    at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:214) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:742) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:539) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2324) 
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497) 
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540) 
Caused by: java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4169) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:440) 
    at facade.Facade.createPerson(Facade.java:35) 
    at Beans.SessionBeanPersoon.voegToePerson(SessionBeanPersoon.java:33) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124) 
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388) 
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370) 
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360) 
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348) 
    at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:206) 
    ... 19 more 
2013-12-13 00:52:14.538 java[616:507] [JRSAppKitAWT markAppIsDaemon]: Process manager already initialized: can't fully enable headless mode. 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.javafx.main.Main$2.run(Main.java:948) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:241) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733) 
    at java.awt.EventQueue.access$200(EventQueue.java:103) 
    at java.awt.EventQueue$3.run(EventQueue.java:694) 
    at java.awt.EventQueue$3.run(EventQueue.java:692) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 
Caused by: java.awt.HeadlessException 
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207) 
    at java.awt.Window.<init>(Window.java:535) 
    at java.awt.Frame.<init>(Frame.java:420) 
    at java.awt.Frame.<init>(Frame.java:385) 
    at javax.swing.SwingUtilities$SharedOwnerFrame.<init>(SwingUtilities.java:1759) 
    at javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:1834) 
    at javax.swing.JOptionPane.getRootFrame(JOptionPane.java:1697) 
    at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:863) 
    at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:667) 
    at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:638) 
    ... 19 more 
Java Result: 1 

GlassFish服務器日誌:

WARNING: Cannot drop tables for application EJBModuleDA. The expected DDL file  EJBModuleDA_EJBModuleDAPU_dropDDL.jdbc is not available. 
    WARNING: Cannot create tables for application EJBModuleDA. The expected DDL file EJBModuleDA_EJBModuleDAPU_createDDL.jdbc is not available. 
    INFO: EJB5181:Portable JNDI names for EJB SessionBeanPersoon: [java:global/EJBModuleDA/SessionBeanPersoon!Beans.SessionRemote, java:global/EJBModuleDA/SessionBeanPersoon!Beans.SessionBeanPersoon] 
    INFO: EJB5182:Glassfish-specific (Non-portable) JNDI names for EJB SessionBeanPersoon: [Beans.SessionRemote, Beans.SessionRemote#Beans.SessionRemote] 

任何人說知道我可以解決這個問題?

回答

0

已解決。我重新啓動系統並重新安裝了glassfish。現在可以運行

相關問題