Hi!
Brauche ich folgendes auch wenn ich nur Objekte lade und nichts schreibe:
Hier die ganze Methode:
Hier leseich einfach alle Daten aus einer View wo die Bedingung passt. Hierbei arbeite ich auch mit Oracle Spatial Objekten und wenn ich ebendiese hierbei lade, dann bekomme ich bei
folgende Exception:
mapping file zu der view:
Warum wird hier plötzlich ein Update durchgeführt?
Also braucht man das Transaktions-Commit auch beim laden?
mfg
Brauche ich folgendes auch wenn ich nur Objekte lade und nichts schreibe:
Code:
tx.commit();
Hier die ganze Methode:
Code:
public static VSegmentDetectionModel loadSegment(final Integer gpsId) {
StringBuffer sb = new StringBuffer();
sb.append(" select {vSegmentDetection.*} ");
sb.append(" from ");
sb.append(VSegmentDetectionDB.TABLE_NAME);
sb.append(" {vSegmentDetection} ");
sb.append(" where ");
sb.append(VSegmentDetectionDB.COLUMN_GT_ID);
sb.append(" = ");
sb.append(gpsId);
Session session = HibernateUtil.getCurrentSession();
Transaction tx = null;
VSegmentDetectionModel model = new VSegmentDetectionModel();
try {
tx = session.beginTransaction();
SQLQuery q = session.createSQLQuery(sb.toString());
q.addEntity("vSegmentDetection", VSegmentDetectionModel.class);
model = (VSegmentDetectionModel) q.uniqueResult();
/* commit and close session */
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
e.printStackTrace();
}
} finally {
session = null;
tx = null;
}
return model;
}
Hier leseich einfach alle Daten aus einer View wo die Bedingung passt. Hierbei arbeite ich auch mit Oracle Spatial Objekten und wenn ich ebendiese hierbei lade, dann bekomme ich bei
Code:
tx.commit();
Code:
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:142)
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.VSegmentDetectionDB.loadSegment(VSegmentDetectionDB.java:113)
at at.pcd.wam.technologie.batch.Test.main(Test.java:11)
Caused by: java.sql.BatchUpdateException: ORA-01733: Virtuelle Spalte hier nicht zulässig
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
mapping file zu der view:
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.VSegmentDetectionModel" table="V_SEGMENT_DETECTION" >
<!-- primary key -->
<id name="gpsId" type="integer" column="GT_ID">
<generator class="assigned"></generator>
</id>
<property name="fGeom" type="at.pcd.wam.technologie.persistence.custom.type.JGeometryType" column="F_GEOM" />
<property name="gGeom" type="at.pcd.wam.technologie.persistence.custom.type.JGeometryType" column="GT_GEOM" />
<property name="distance" type="double" column="DISTANCE"></property>
<property name="featureId" type="integer" column="F_ID"></property>
<property name="featureName" type="string" column="F_NAME"></property>
<property name="gpsTourId" type="integer" column="GT_TOUR_ID"></property>
</class>
</hibernate-mapping>
Warum wird hier plötzlich ein Update durchgeführt?
Also braucht man das Transaktions-Commit auch beim laden?
mfg