Code:
package at.pcd.wam.technologie.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import at.pcd.bitte.MyAddressModel;
import at.pcd.wam.technologie.hibernate.utility.HibernateUtil;
public class TestHibernate {
/**
* @param args
*/
public static void main(String[] args) {
Session session = HibernateUtil.getCurrentSession();
Transaction tx = session.beginTransaction();
MyAddressModel my = new MyAddressModel();
my.setAenderung(null);
my.setAnforderung(null);
my.setBahnhof("Bahnof");
my.setBeschreibung("Beschreibung");
my.setCc("AT");
my.setEar(null);
my.setEmail("EMAIL");
my.setErstellt(null);
my.setFunktion("Funkion");
my.setGeburtsdatum(null);
my.setGeo(null);
my.setGeoLat(null);
my.setGeoLong(null);
my.setGeoX(null);
my.setGeoY(null);
my.setGeschlecht("Geschlecht");
my.setGueltig(null);
my.setGuid("GUID"); //
my.setHtmlmail(null);
my.setId(1); //FIXME setzen?
my.setMobiltel(null);
my.setNichtDeutsch(null);
my.setNRekey01(null);
my.setNrid5(null);
my.setOrganisation(null);
my.setOrt(null);
my.setPlz(null);
my.setReview(null);
my.setRid1(null);
my.setRid2(null);
my.setRid3(null);
my.setRid4(null);
my.setSkype(null);
my.setSpam(null);
my.setStrasse(null);
my.setTelefon(null);
my.setTitel(null);
my.setVorname(null);
my.setWeb(null);
my.setZuname(null);
session.save(my);
/* funktioniert - aus db lesen */
// ArrayList<AdvancedAddressModel> aModel = (ArrayList<AdvancedAddressModel>)
// session.createQuery("select id, countryCode from AdvancedAddressModel").list();
//***
tx.commit();
}
}
Somit wären wirklich alle Felder mit Werten abgedeckt, jedoch bekomme ich nach wie vor folgende Fehlermeldung:
29.05.2007 11:28:29 org.hibernate.util.JDBCExceptionReporter logExceptions
SCHWERWIEGEND: Wert für Parameternummer "40" wurde nicht festgelegt.
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [at.pcd.bitte.MyAddressModel]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:40)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
at $Proxy0.save(Unknown Source)
at at.pcd.wam.technologie.test.TestHibernate.main(TestHibernate.java:61)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Wert für Parameternummer "40" wurde nicht festgelegt.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.buildParamTypeDefinitions(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.buildPreparedStrings(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doPrepExec(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PreparedStatementExecutionRequest.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(Unknown Source)
at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
... 22 more
Wenn man folgendem trauen darf ist Parameter 40 die ID:
Hibernate: insert into spc.dbo.JAVA_TEST_HIBERNATE (AENDERUNG, ANFORDERUNG, BAHNHOF, BESCHREIBUNG, CC, EAR, EMAIL, ERSTELLT, FUNKTION, GEBURTSDATUM, GEO, GEO_LAT, GEO_LONG, GEO_X, GEO_Y, GESCHLECHT, GUELTIG, GUID, HTMLMAIL, MOBILTEL, NICHTDEUTSCH, N_REKEY01, NRID5, ORGANISTAION, ORT, PLZ, REVIEW, RID1, RID2, RID3, RID4, SKYPE, SPAM, STRASSE, TELEFON, TITEL, VORNAME, WEB, ZUNAME,
ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Doch die sollte doch "identity" sein und somit nicht von mir versorgt werden?
**EDIT**
Mittlerweile habe ich es zum Laufen gebracht, habe statt "identity" "increment" benutzt (bei meiner Test Tabelle) und dann funktioniert es - nun stellt sich halt die Frage wie ich dies konfigurieren soll wenn das Feld in der bestehenden DB als "identifier" deklariert ist..