# Neuen Datensatz erzeugen schlägt fehl



## Hannes23 (5. Mai 2010)

Hallo zusammen,

ich arbeite gerade an einem J2EE-Webserver, der Datensätze aus einer Postgres-DB ausliest und neue hineinschreibt. Das Auslesen funktioniert wunderbar, nur die Funktion create macht Probleme. Ein Webserver stellt dabei einem client (anderes Java-Projekt) die nötigen Methoden zur Verfügung.

Webserver.java

```
@WebMethod
	@Override
	public void create_job(String type, 
			String arg1, String arg2, String arg3, String arg4, String arg5){
			
	               @PersistenceContext(unitName="p1")
	                public EntityManager em;
		
			// Zu erstellendes Job-Objekt vorbereiten 
			Job newjob = new Job();
			newjob.setId(3);
			newjob.setType(type);
			newjob.setArg1(arg1);
			newjob.setArg1(arg2);
			newjob.setArg1(arg3);
			newjob.setArg1(arg4);
			newjob.setArg1(arg5);
			//newjob.setJobdate(df.format( dt ));
			newjob.setJobdate("2010-05-03");
			newjob.setResponsible_server("Server1");
			
			// Neuen Job in DB schreiben
			try {
				em.persist(newjob);
			} catch (Exception e) {
				System.out.println("Fehler bei create_job");
				e.printStackTrace();
			}
		
	}
```


Client.java

```
public static void main(String[] args) {
		
		// Webservice vorbereiten
		WebserviceService service = new WebserviceService();
		Webservice myws = service.getWebservicePort();
		
		//Neuen Job erstellen
		myws.createJob("mytype", "coolerinhalt.net","","","","");
```

Der Webserver lässt sich wie gesagt problemlos deployen. Der client kann Werte auslesen, aber sobald die Funktion create_job auf dem Client ausgeführt wird, wirft der JBoss folgende Fehlermeldung:


```
09:12:33,985 ERROR [JDBCExceptionReporter] Batch-Eintrag 0 insert into policy.jobqueue (arg1, arg2, arg3, arg4, arg5, jobdate, responsible_server, status, type, id) values ('', NULL, NULL, NULL, NULL, '2010-05-03', 'Bronski', NULL, 'create_domain', '3') wurde abgebrochen.  Rufen Sie 'getNextException' auf, um die Ursache zu erfahren.
09:12:33,985 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: 42804
09:12:33,985 ERROR [JDBCExceptionReporter] FEHLER: Spalte »jobdate« hat Typ date, aber der Ausdruck hat Typ character varying
  Hinweis: Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen.
  Position: 135
09:12:33,985 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update

Caused by: java.sql.BatchUpdateException: Batch-Eintrag 0 insert into policy.jobqueue (arg1, arg2, arg3, arg4, arg5, jobdate, responsible_server, status, type, id) values ('', NULL, NULL, NULL, NULL, '2010-05-03', 'Bronski', NULL, 'create_domain', '3') wurde abgebrochen.  Rufen Sie 'getNextException' auf, um die Ursache zu erfahren.

09:12:34,007 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator_2] TwoPhaseCoordinator.beforeCompletion - failed for com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple@be4814
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update

Caused by: org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
	
Caused by: java.sql.BatchUpdateException: Batch-Eintrag 0 insert into policy.jobqueue (arg1, arg2, arg3, arg4, arg5, jobdate, responsible_server, status, type, id) values ('', NULL, NULL, NULL, NULL, '2010-05-03', 'Bronski', NULL, 'create_domain', '3') wurde abgebrochen.  Rufen Sie 'getNextException' auf, um die Ursache zu erfahren.
```

Kann mir da jemand weiterhelfen? 

Vielen Dank, Hannes

--
Umgebung:
-Ubuntu 9.10
-Eclipse IDE for Java EE Developers 1.2.2.20100217-2310 epp.package.jee
-Java 1.6.0
-JBoss 5.0 GA 
-Postgres 8.4.3.0


----------



## Geeeee (5. Mai 2010)

Liegt wohl an [c]newjob.setJobdate("2010-05-03");[/c]. Da solltest du schon ein Date Objekt übergeben und keinen String.


----------



## Hannes23 (5. Mai 2010)

mhmm...stimmt, danke. Steht ja eigentlich auch ziemlich klar in der Fehlermeldung


----------

