2012-04-01 47 views
1

我faceing以下問題: 當我運行我的程序,我得到了以下情況除外:JPA java.lang.IllegalArgumentException異常:對象:[ID = XYZ]不是一個已知的實體類型

的Java。 lang.IllegalArgumentException:Object:dviaufgabe1.MeinArtikel [ id = 25]不是已知的實體類型。在

org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4128) 在 org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:406) 在dviaufgabe1.DVIAufgabe1.persist(DVIAufgabe1.java:78)在 dviaufgabe1.DVIAufgabe1.erstelleBasisDaten(DVIAufgabe1.java:55)在 dviaufgabe1.DVIAufgabe1.main(DVIAufgabe1.java:22)

或(對於自動代碼鍵)

java.lang.IllegalArgumentException異常:對象:dviaufgabe1.MeinArtikel [ ID =空]是不是已知的實體類型。在 org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4128) 在 org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:406) 在dviaufgabe1.DVIAufgabe1 .persist(DVIAufgabe1.java:78)在 dviaufgabe1.DVIAufgabe1.erstelleBasisDaten(DVIAufgabe1.java:56)在 dviaufgabe1.DVIAufgabe1.main(DVIAufgabe1.java:22)

MeinArtikel.java

@Entity 
    public class MeinArtikel implements Serializable { 
     private static final long serialVersionUID = 1L; 
     @Id 
     @GeneratedValue(strategy = GenerationType.AUTO) 
     private Long artikelNummer; 

     private String name; 
     private String beschreibung; 
     private long preis; 
     private long lagerbestand; 

     public Long getArtikelNummer() { 
      return artikelNummer; 
     } 

     public String getBeschreibung() { 
      return beschreibung; 
     } 

     public long getLagerbestand() { 
      return lagerbestand; 
     } 

     public String getName() { 
      return name; 
     } 

     public long getPreis() { 
      return preis; 
     } 

     public void setBeschreibung(String beschreibung) { 
      this.beschreibung = beschreibung; 
     } 

     public void setLagerbestand(long lagerbestand) { 
      this.lagerbestand = lagerbestand; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public void setPreis(long preis) { 
      this.preis = preis; 
     } 

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

     @Override 
     public int hashCode() { 
      int hash = 0; 
      hash += (artikelNummer != null ? artikelNummer.hashCode() : 0); 
      return hash; 
     } 

     @Override 
     public boolean equals(Object object) { 
      // TODO: Warning - this method won't work in the case the artikelNummer fields are not set 
      if (!(object instanceof MeinArtikel)) { 
       return false; 
      } 
      MeinArtikel other = (MeinArtikel) object; 
      if ((this.artikelNummer == null && other.artikelNummer != null) || (this.artikelNummer != null && !this.artikelNummer.equals(other.artikelNummer))) { 
       return false; 
      } 
      return true; 
     } 

     @Override 
     public String toString() { 
      return "dviaufgabe1.MeinArtikel[ id=" + artikelNummer + " ]"; 
     } 

主類:

public class DVIAufgabe1 { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     erstelleBasisDaten(); 
    } 
    public static void erstelleBasisDaten() { 
     MeinArtikel a1 = new MeinArtikel(); 
//  a1.setArtikelNummer(23L); 
     a1.setName("Bachelor of Science - Informatik (WH)"); 
     a1.setBeschreibung("Informatik Bachelor der Westfälischen Hochschule"); 
     a1.setPreis(0L); 
     a1.setLagerbestand(100L); 

     MeinArtikel a2 = new MeinArtikel(); 
//    a2.setArtikelNummer(24L); 
     a2.setName("Master of Science - Informatik (WH)"); 
     a2.setBeschreibung("Informatik Master der Westfälischen Hochschule"); 
     a2.setPreis(100L); 
     a2.setLagerbestand(50L); 

     MeinArtikel a3 = new MeinArtikel(); 
//    a3.setArtikelNummer(25L); 
     a3.setName("Master of Science - Informatik (TU München)"); 
     a3.setBeschreibung("Informatik Master der TU München"); 
     a3.setPreis(10000L); 
     a3.setLagerbestand(5L); 

     MeinArtikel a4 = new MeinArtikel(); 
//    a4.setArtikelNummer(26L); 
     a4.setName("Abitur NRW"); 
     a4.setBeschreibung("Abitur der Klasse 13"); 
     a4.setPreis(1000L); 
     a4.setLagerbestand(500L); 

     persist(a1); 
     persist(a2); 
     persist(a3); 
     persist(a4); 

    } 

    public static void persist(Object object) { 
     EntityManagerFactory emf = Persistence.createEntityManagerFactory("DVIAufgabe1PU"); 
     EntityManager em = emf.createEntityManager(); 
     em.getTransaction().begin(); 
     try { 
      em.persist(object); 
      em.getTransaction().commit(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      em.getTransaction().rollback(); 
     } finally { 
      em.close(); 
     } 
    } 

persictence.xml

<?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="DVIAufgabe1PU" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <class>dviaufgabe1. MeinArtikel</class> 
    <class>dviaufgabe1.MeineKategorie</class> 
    <properties> 
     <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/DVIAufgabe1"/> 
     <property name="javax.persistence.jdbc.password" value="myuser"/> 
     <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/> 
     <property name="javax.persistence.jdbc.user" value="myuser"/> 
     <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

回答

1

你缺少在persistence.xml的空間, 「MeinArtikel」

+0

也就是說,你必須在XML中的「」標籤的額外空間。 – 2012-04-01 16:23:48

2

首先出現之前,你應該在persistence.xml刪除的空間,就在第一個標籤類中的「MeinArtikel」之前。再經過

<class>dviaufgabe1.MeineKategorie</class> 

加入這一行

<exclude-unlisted-classes>false</exclude-unlisted-classes> 
相關問題