2011-01-09 6 views
2

Lernen Hibernate und seine wirklich macht mich verrückt Ich versuche, eine Entity-Klasse bestehen bleiben zusammen mit seinen chilren und hier ist das Verfahren, das dies für mich tutHibernate saveOrUpdate Methode funktioniert nicht wie erwartet

log.info("About to persist the given Entity instance"); 
     Session session=HibernateSessionFactory.getSessionfactory().openSession(); 
     Transaction tx=session.getTransaction(); 
     try{ 
      tx.begin(); 
      session.saveOrUpdate(entity); 
      tx.commit(); 
     } 
     catch(Exception e){ 
      tx.rollback(); 
     } 
     finally{ 
      session.close(); 
     } 
     return entity; 
    } 

alles scheint ok und hier ist die Ausgabe der Konsole i

23:47:08,627 INFO GenericDAOImpl:172 - About to persist the given Entity instance 
2011-01-09 23:47:08,627 [http-8080-3] INFO com.raisonne.tr.dao.impl.GenericDAOImpl - About to persist the given Entity instance 
9 Jan, 2011 11:47:08 PM org.hibernate.impl.SessionFactoryImpl close 
INFO: closing 
9 Jan, 2011 11:47:08 PM org.hibernate.connection.DriverManagerConnectionProvider close 
INFO: cleaning up connection pool: jdbc:mysql://localhost/travellingrants 
9 Jan, 2011 11:47:08 PM org.hibernate.connection.DriverManagerConnectionProvider configure 
INFO: Using Hibernate built-in connection pool (not for production use!) 
9 Jan, 2011 11:47:08 PM org.hibernate.connection.DriverManagerConnectionProvider configure 
INFO: Hibernate connection pool size: 20 
9 Jan, 2011 11:47:08 PM org.hibernate.connection.DriverManagerConnectionProvider configure 
INFO: autocommit mode: false 
9 Jan, 2011 11:47:08 PM org.hibernate.connection.DriverManagerConnectionProvider configure 
INFO: using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/travellingrants 
9 Jan, 2011 11:47:08 PM org.hibernate.connection.DriverManagerConnectionProvider configure 
INFO: connection properties: {user=root, password=****} 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: RDBMS: MySQL, version: 5.1.51-community 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.13 (Revision: ${bzr.revision-id}) 
9 Jan, 2011 11:47:08 PM org.hibernate.dialect.Dialect <init> 
INFO: Using dialect: org.hibernate.dialect.MySQLDialect 
9 Jan, 2011 11:47:08 PM org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory 
INFO: Using default transaction strategy (direct JDBC transactions) 
9 Jan, 2011 11:47:08 PM org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup 
INFO: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Automatic flush during beforeCompletion(): disabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Automatic session close at end of transaction: disabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: JDBC batch size: 15 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: JDBC batch updates for versioned data: disabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Scrollable result sets: enabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: JDBC3 getGeneratedKeys(): enabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Connection release mode: auto 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Default schema: travellingrants 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Maximum outer join fetch depth: 2 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Default batch fetch size: 1 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Generate SQL with comments: enabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Order SQL updates by primary key: disabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Order SQL inserts for batching: disabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory 
INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 
9 Jan, 2011 11:47:08 PM org.hibernate.hql.ast.ASTQueryTranslatorFactory <init> 
INFO: Using ASTQueryTranslatorFactory 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Query language substitutions: {} 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: JPA-QL strict compliance: disabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Second-level cache: enabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Query cache: disabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory createRegionFactory 
INFO: Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Optimize cache for minimal puts: disabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Structured second-level cache entries: disabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Echoing all SQL to stdout 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Statistics: disabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Deleted entity synthetic identifier rollback: disabled 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Default entity-mode: pojo 
9 Jan, 2011 11:47:08 PM org.hibernate.cfg.SettingsFactory buildSettings 
INFO: Named query checking : enabled 
9 Jan, 2011 11:47:08 PM org.hibernate.impl.SessionFactoryImpl <init> 
INFO: building session factory 
9 Jan, 2011 11:47:08 PM org.hibernate.impl.SessionFactoryObjectFactory addInstance 
INFO: Not binding factory to JNDI, no JNDI name configured 

bin total cluless Hibernate keine Ausnahme noch die Einsparung etwas in der Datenbank zeigt kann jeder eine Idee mit etwa hiberntae mir vorschlagen, was ich falsch ist alles etwas verdächtiges sehen können Zeilen von Log-Ganzzahlen

9 Jan, 2011 11:47:08 PM org.hibernate.impl.SessionFactoryImpl close 
INFO: closing 
9 Jan, 2011 11:47:08 PM org.hibernate.connection.DriverManagerConnectionProvider close 
INFO: cleaning up connection pool: jdbc:mysql://localhost/travellingrants 

aber wirklich keine Ahnung, was es

Edit1 hier ist die Mutterzuordnungsdatei

<hibernate-mapping> 
    <class name="com.raisonne.tr.model.destination.Destination" table="DESTINATION"> 
     <id name="uuid" type="java.lang.String"> 
       <column name="UUID" /> 
       <generator class="uuid"/> 
     </id> 
     <property name="destinationID" type="java.lang.String" not-null="true"> 
      <column name="DESTINATIONID" /> 
     </property> 
     <property name="name" type="java.lang.String" not-null="true"> 
      <column name="NAME" /> 
     </property> 
     <property name="shortDescription" type="java.lang.String"> 
      <column name="SHORTDESCRIPTION" /> 
     </property> 
     <property name="longDescription" type="java.lang.String"> 
      <column name="LONGDESCRIPTION" /> 
     </property> 

     <set name="airTransport" table="AIRTRANSPORT" inverse="true" lazy="true" cascade="save-update"> 
      <key> 
       <column name="DESTINATIONID" /> 
      </key> 
      <one-to-many class="com.raisonne.tr.model.destination.destinationattributes.AirTransport" /> 
     </set> 
     <set name="roadTransport" table="ROADTRANSPORT" inverse="true" lazy="true" cascade="save-update"> 
      <key> 
       <column name="DESTINATIONID" /> 
      </key> 
      <one-to-many class="com.raisonne.tr.model.destination.destinationattributes.RoadTransport" /> 
     </set> 
     <set name="trainTransport" table="TRAINTRANSPORT" inverse="true" lazy="true" cascade="save-update"> 
      <key> 
       <column name="DESTINATIONID" /> 
      </key> 
      <one-to-many class="com.raisonne.tr.model.destination.destinationattributes.TrainTransport" /> 
     </set> 

     <set name="emergencyContact" table="EMERGENCYCONTACT" inverse="true" lazy="true" cascade="save-update"> 
      <key> 
       <column name="DESTINATIONID" /> 
      </key> 
      <one-to-many class="com.raisonne.tr.model.destination.destinationattributes.EmergencyContact" /> 
     </set> 

     <set name="placesToVisit" table="PLACETOVISIT" inverse="true" lazy="true" cascade="save-update"> 
      <key> 
       <column name="DESTINATIONID" /> 
      </key> 
      <one-to-many class="com.raisonne.tr.model.destination.destinationattributes.PlaceToVisit" /> 
     </set> 
     <set name="news" table="NEWS" inverse="true" lazy="true" cascade="save-update"> 
      <key> 
       <column name="DESTINATIONID" /> 
      </key> 
      <one-to-many class="com.raisonne.tr.model.news.News" /> 
     </set> 
     <set name="userComments" table="USERCOMMENT" inverse="true" lazy="true" cascade="save-update"> 
      <key> 
       <column name="DESTINATIONID" /> 
      </key> 
      <one-to-many class="com.raisonne.tr.model.user.UserComment" /> 
     </set> 
     <set name="address" table="BASICADDRESS" inverse="true" lazy="true" cascade="save-update"> 
      <key> 
       <column name="DESTINATIONID" /> 
      </key> 
      <one-to-many class="com.raisonne.tr.model.address.BasicAddress" /> 
     </set> 
     <set name="categories" table="CATEGORY" inverse="true" lazy="true" cascade="save-update"> 
      <key> 
       <column name="DESTINATIONID" /> 
      </key> 
      <one-to-many class="com.raisonne.tr.model.category.Category" /> 
     </set> 
    </class> 
</hibernate-mapping> 

und Kind-Mapping-Datei hat, wie unten Einträge.

<hibernate-mapping> 
    <class name="com.raisonne.tr.model.destination.destinationattributes.PlaceToVisit" table="PLACETOVISIT"> 
     <id name="uuid" type="java.lang.String"> 
      <column name="UUID" /> 
      <generator class="uuid" /> 
     </id> 
     <property name="name" type="java.lang.String"> 
      <column name="NAME" /> 
     </property> 
     <many-to-one name="destination" class="com.raisonne.tr.model.destination.Destination" fetch="join"> 
      <column name="DESTINATION" /> 
     </many-to-one> 
     </class> 
</hibernate-mapping> 
+0

Können Sie die Zuordnungsdatei hinzufügen (oder Quelle, wenn Sie Anmerkungen verwenden) –

+0

Ich hoffe, dass jemand, der 29 vorherige Fragen gestellt hatte, wissen würde, wie man jetzt einen besseren Betrefftitel auswählt. – skaffman

+0

@skaffman: stimme ich zu, ich denke, ich sollte einige Aufmerksamkeit auf einen guten Titel für meine Frage zu zahlen.Danke für den Zeiger wird mein Bestes für das nächste Mal versuchen –

Antwort

1

Versuchen in Sie Code mit

catch(Exception e){ 
      Logger.getAnonymousLogger().log(Level.SEVERE, e.getLocalizedMessage()); 
      tx.rollback(); 
} 
+0

Wird versuchen, dies und lassen Sie es wissen was genau los ist –

+0

Also die oben genannten lösen Ihr Problem? – Siddharth

0

Das Bit, das Ihr fehlt 'Casade' Einstellungen auf den Kind-Beziehungen repleacing fangen.

Wenn Hibernate eine neue Entity speichert, sucht sie nach Child-Objekten, die neu sind und auf save-update gesetzt sind (wird ein Beispiel später ausgraben).

+0

Ich habe bereits eine Kaskadierungseigenschaft und deren nicht speichernde Zielinstanz noch kann ich einen SQL-Befehl auf der Konsole sehen, da ich bereits die erforderlichen Eigenschaften in der hibernate.properties-Datei gesetzt habe, um sql auf der Konsole zu sehen –

Verwandte Themen