我正面临以下问题: 当我运行我的程序时,我得到以下例外:
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)at dviaufgabe1.DVIAufgabe1.erstelleBasisDaten(DVIAufgabe1.java:55)at at dviaufgabe1.DVIAufgabe1.main(DVIAufgabe1.java:22)
或(对于自动生成键)
java.lang.IllegalArgumentException:Object:dviaufgabe1.MeinArtikel [ id = null]不是已知的实体类型。在 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)at dviaufgabe1.DVIAufgabe1.erstelleBasisDaten(DVIAufgabe1.java:56)at at 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>
答案 0 :(得分:2)
首先,您应该删除persistence.xml中的空格,就在第一个标记类中的“MeinArtikel”之前。之后
<class>dviaufgabe1.MeineKategorie</class>
添加此行
<exclude-unlisted-classes>false</exclude-unlisted-classes>
答案 1 :(得分:1)
你在“MeinArtikel”之前的persistence.xml中缺少一个空格