Problem Dependency Injection im Kreis Hibernate Listener

Diskutiere Problem Dependency Injection im Kreis Hibernate Listener im Application Tier Forum; Hallo, ich möchte einen Listener in der SessionFactory registrieren, der dann wieder über ein DAO in DB schreibt. <bean id="sessionFactory"...

  1. navino
    navino Mitglied
    Hallo,

    ich möchte einen Listener in der SessionFactory registrieren, der dann wieder über ein DAO in DB schreibt.

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" p:dataSource-ref="dataSource" p:configLocation="classpath:hibernate.cfg.xml">
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">${hibernate.dialect}</prop>
    <prop key="hibernate.use_outer_join">true</prop>
    <prop key="hibernate.jdbc.batch_size">20</prop>
    <prop key="hibernate.max_fetch_depth">3</prop>

    <prop key="hibernate.show_sql">false</prop>
    <prop key="hibernate.format_sql">false</prop>

    <prop key="hibernate.generate_statistics">false</prop>
    <prop key="hibernate.cache.use_structured_entries">false</prop>
    <!-- Statistics stats = sessionFactory.getStatistics() -->
    </props>
    </property>

    <property name="eventListeners">
    <map>
    <entry>
    <key><value>save-update</value></key>
    <ref bean="changeListener"/>
    </entry>
    </map>
    </property>
    </bean>

    <!-- Änderungen von Objekten speichern -->
    <bean id="changeListener" class="xxx.hibernate.listener.ObjectChangeListenerImpl">
    <!-- --> <property name="changeDao" ref="changeDao" />
    </bean>
    <bean id="changeDao" class="xxx.hibernate.ChangeDaoImpl">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    Also, die SessionFactory hat den Listener, der Listener das Dao, und die Dao benötigt die SessionFactory..

    Bekomme das mit folgendem Fehler quittiert:

    Error creating bean with name 'sessionFactory': FactoryBean which is currently in creation returned null from getObject

    Wie kann ich das lösen?

    Gruß
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. tagedieb
    tagedieb Neues Mitglied
    Lass die Referenz einfach weg und greif im Listener via dem SaveOrUpdateEvent auf die SessionFactory zu.

    Code (Java):


    public void onSaveOrUpdate(SaveOrUpdateEvent event) throws HibernateException {
      SessionFactory factory = event.getSession().getFactory();
      ...
    }

     

    Habs nicht getested, denke es sollte aber so funktionieren
     
  4. navino
    navino Mitglied
    Hallo,

    ich glaube das ist ein guter Ansatz....

    Ich möchte dann ein anderes Objekt in der Datenbank speichern, doch wird das Objekt nicht gespeichert, und einen Fehler bekomme ich nicht.

    Hole mir jetzt also die Session:

    public void onSaveOrUpdate(SaveOrUpdateEvent event) throws HibernateException {
    Session session = event.getSession();
    //Erzeuge ein neues Objekt...
    Change change = new ChangeImpl();
    change.setObjectId(p.getId());
    change.setParentId(p.getKomId());
    change.setChange(ToStringHelper.toString(p));
    change.setCreatedAt(Calendar.getInstance().getTime());
    session.save(change);
    }

    Das Objekt ist allerdings nicht in der Datenbank, so als ob ein Commit fehlt..
    Gruß
     
  5. navino
    navino Mitglied
    klappt jetzt, über die SessionFactory mit neuer Session und Transaction.

    Gruß und Danke für die Hilfe!!
     
  6. navino
    navino Mitglied
    Meine Speicherung der Änderungen hat geklappt, jetzt werden aber die ursprünglichen Änderungen der anderen Objekte nicht commitet....

    Gruß
     
Die Seite wird geladen...

Problem Dependency Injection im Kreis Hibernate Listener - Ähnliche Themen

Dependency Injection, Konfigurationsproblem
Dependency Injection, Konfigurationsproblem im Forum Application Tier
J2V8 NodeJs Java Bride Problem und Frage!?!?
J2V8 NodeJs Java Bride Problem und Frage!?!? im Forum Allgemeine Java-Themen
Java Bomberman Probleme java.lang.NullPointerException
Java Bomberman Probleme java.lang.NullPointerException im Forum Spiele- und Multimedia-Programmierung
Problem mit Thread.sleep
Problem mit Thread.sleep im Forum Java Basics - Anfänger-Themen
javac hat Probleme mit Paketen unter OSX
javac hat Probleme mit Paketen unter OSX im Forum Java Basics - Anfänger-Themen
Thema: Problem Dependency Injection im Kreis Hibernate Listener