Da issa wieder
. So bin ja gerne gewillt auch schönen Code zu schreiben, tippe (leider) meistens einfach drauf los und schaue das es funktioniert und erst im nachhinein denke ich mir das ich totalen Murks gemacht habe. Jetzt sieht das ganze so aus:
Servlet das die Daten aus der Datenbank fischt: (forward auf meine index-Seite)
die indexSeite included 2 JSP die mir die Seite aufbauen.
Geht wieder. PRoblem ist leider immer noch das alte: findet den Deployment Descriptor nicht immer. Konnte es aber ein wenig genauer lokalisieren: der Fehler tritt nur noch dann auf wenn ich neu Deploye. Also wenn ich eine JSP z.B. ändere und Eclipse diese neu hoch läd, dann tritt der Fehler auf
?
Code:
Exception [TOPLINK-6007] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.QueryException
Exception Description: Missing descriptor for [class dd.entities.Dreminder].
Query: ReadAllQuery(dd.entities.Dreminder)
und weil ein Fehler ja nicht genug ist, und ich langsam zu der Überzeugung komme das die PersistenzUnit einen gewissen Groll gegen mich hegt, persistiert sie auch nicht
im DataServlet
Code:
private void setData(HttpServletRequest arg0, HttpServletResponse arg1) {
Dreminder entry=new Dreminder();
entry.setDescription((String)arg0.getParameter("des"));
entry.setRemindermin(Integer.parseInt((String)arg0.getParameter("rTime")));
entry.setLabel((String)arg0.getParameter("label"));
entry.setStartdate(getCalenderFromString((String)arg0.getParameter("start")));
entry.setEnddate(getCalenderFromString((String)arg0.getParameter("end")));
EntityManager em = factory.createEntityManager();
em.persist(entry);
em.close();
System.out.println(entry.getId());
}
Das erste Problem das keine automatische ID generriert werden kann, habe ich schon umgangen, indem ich die entsprechende Tabelle angelegt habe (hatte ich irgendwo in einem Forum gefunden). Aber wenn ich persistiert habe, passiert nichts... kein Fehler, kein Hinweis, keine Daten in der Datenbank
Entity:
Code:
@Entity
@Table(name="dreminder")
public class Dreminder implements Serializable {
@Id
@GeneratedValue
private int id;
private Timestamp enddate;
private Timestamp startdate;
private int remindermin;
private String label;
private String description;
private static final long serialVersionUID = 1L;
public Dreminder() {
super();
}
.....
und meine persistenceXML
Code:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="default">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<class>
dd.entities.Dreminder</class>
<properties>
<property name="toplink.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
<property name="toplink.jdbc.url" value="jdbc:derby:C:\DerbyDatabases\dreminder2;create=true"/>
<property name="toplink.jdbc.user" value="admin"/>
<property name="toplink.jdbc.password" value="admin123"/>
<property name="toplink.logging.level" value="INFO"/>
</properties>
</persistence-unit>
</persistence>