hi!
Ich möchte ein Objekt vom Typ GPRMCModel in die DB schreiben, die Tabelle existiert aber noch nicht (Hibernate sollte sie ja anlegen, falls sie nicht existiert?). Ich benutze eine Oracle 10g XE DB, neuestes Hibernate.
Bekomme bei save folgende Fehlermeldung:
In der Exception ist noch folgendes zu finden:
hibernate.config:
hbm file:
bsp code:
**EDIT**
Hab nun schon einen Fehler gefunden, anscheinend darf man eine Tabellenspalte nicht "DATE" nennen - hab ich nun geändert. Weiters hab ich "native" als generator class entfernt (kA warum das nicht geht) und anstatt assigned benutzt.
Damit klappt dann zumindest das save, aber speichern bnzw die Tabelle anlegen tut hibernate nicht.
Fehlermeldung:
Ich möchte ein Objekt vom Typ GPRMCModel in die DB schreiben, die Tabelle existiert aber noch nicht (Hibernate sollte sie ja anlegen, falls sie nicht existiert?). Ich benutze eine Oracle 10g XE DB, neuestes Hibernate.
Bekomme bei save folgende Fehlermeldung:
Code:
WARNUNG: SQL Error: 2289, SQLState: 42000
13.09.2007 15:06:55 org.hibernate.util.JDBCExceptionReporter logExceptions
SCHWERWIEGEND: ORA-02289: Sequence ist nicht vorhanden.
In der Exception ist noch folgendes zu finden:
Code:
could not get next sequence value
select hibernate_sequence.nextval from dual
hibernate.config:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="hibernate.connection.password">navteq</property>
<property name="hibernate.connection.url">
****
</property>
<property name="hibernate.connection.username">navteq</property>
<property name="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="myeclipse.connection.profile">
****
</property>
<property name="connection.url">
****
</property>
<property name="connection.username">****</property>
<property name="connection.password">****</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- -->
<property name="hibernate.show.sql">true</property>
<mapping
resource="at/pcd/wam/technologie/persistence/hbm/GPRMCModel.hbm.xml" />
</session-factory>
</hibernate-configuration>
hbm file:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="at.pcd.wam.technologie.persistence.model">
<class name="at.pcd.wam.technologie.persistence.model.GPRMCModel" table="NMEA_GPRMC" >
<!-- primary key -->
<id name="id" type="string" column="ID">
<generator class="native"></generator>
</id>
<property name="checksum" type="string" column="CHECKSUM"></property>
<property name="cruiseKnot" type="float" column="CRUISE_KNOT"></property>
<property name="date" type="date" column="DATE"></property>
<property name="directionDegree" type="float" column="DIRECTION_DEGREE"></property>
<property name="latitude" type="double" column="LATITUDE"></property>
<property name="latitudeStatus" type="character" column="LATITUDE_STATUS"></property>
<property name="longitude" type="double" column="UID_SPERRE"></property>
<property name="longitudeStatus" type="character" column="LONGITUDE_STATUS"></property>
<property name="magneticDeviation" type="float" column="MAGNETIC_DEVIATION"></property>
<property name="magneticDeviationStatus" type="character" column="MAGNETIC_DEVIATION_STATUS"></property>
<property name="utcTime" type="date" column="UTC_TIME"></property>
<property name="utcTimeStatus" type="character" column="UTC_TIME_STATUS"></property>
</class>
</hibernate-mapping>
bsp code:
Code:
GPRMCModel testModel = new GPRMCModel();
testModel.setChecksum("CHECKSUMME TEST");
testModel.setDate(new Date());
GPRMCDB.insertNewData(testModel);
public static void insertNewData(final GPRMCModel model) {
Session session = HibernateUtil.getCurrentSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
/* insert */
session.save(model);
/* commit and close session */
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
} finally {
session = null;
tx = null;
}
}
**EDIT**
Hab nun schon einen Fehler gefunden, anscheinend darf man eine Tabellenspalte nicht "DATE" nennen - hab ich nun geändert. Weiters hab ich "native" als generator class entfernt (kA warum das nicht geht) und anstatt assigned benutzt.
Damit klappt dann zumindest das save, aber speichern bnzw die Tabelle anlegen tut hibernate nicht.
Fehlermeldung:
Code:
WARNUNG: SQL Error: 942, SQLState: 42000
13.09.2007 15:50:56 org.hibernate.util.JDBCExceptionReporter logExceptions
SCHWERWIEGEND: ORA-00942: Tabelle oder View nicht vorhanden
13.09.2007 15:50:56 org.hibernate.event.def.AbstractFlushingEventListener performExecutions
SCHWERWIEGEND: Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at at.pcd.wam.technologie.persistence.db.GPRMCDB.insertNewData(GPRMCDB.java:42)
at at.pcd.wam.technologie.controller.DummyTest.main(DummyTest.java:19)
Caused by: java.sql.BatchUpdateException: ORA-00942: Tabelle oder View nicht vorhanden
at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10656)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
... 9 more
Zuletzt bearbeitet: