2012-04-01 10 views
1

Ich faceing folgendes Problem: , wenn ich mein Programm ich die folgenden Ausnahmen erhalten laufen:JPA java.lang.IllegalArgumentException: Objekt: [id = XYZ] ist kein bekannter Entitätstyp

java. lang.IllegalArgumentException: Objekt: dviaufgabe1.MeinArtikel [ id = 25] ist kein bekannter Entitätstyp. bei

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

oder (für AutoGen-Schlüssel)

java.lang.IllegalArgumentException: Objekt: dviaufgabe1.MeinArtikel [ id = null] ist kein bekanntes Entitätstyp. bei org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist (UnitOfWorkImpl.java:4128) bei org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist (EntityManagerImpl.java:406) bei dviaufgabe1.DVIAufgabe1 .persist (DVIAufgabe1.java:78) bei dviaufgabe1.DVIAufgabe1.erstelleBasisDaten (DVIAufgabe1.java:56) bei 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 + " ]"; 
     } 

Hauptklasse:

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> 

Antwort

1

Sie einen Raum in der persistence.xml fehlen, direkt vor "MeinArtikel"

+0

Das heißt, haben Sie einen zusätzlichen Platz in der "" -Tag in der XML. –

2

Erstens Sie den Raum in der persistence.xml löschen sollte, direkt vor "MeinArtikel" in der ersten Tag-Klasse. Dann nach

<class>dviaufgabe1.MeineKategorie</class> 

diese Zeile hinzufügen

<exclude-unlisted-classes>false</exclude-unlisted-classes> 
Verwandte Themen