0

hibernateSession と TransactionManager を作成した後、PropertyPlaceholderConfigurer を拡張する Bean を初期化すると、Spring プロジェクトで問題が発生します。理由はわかりませんが、その瞬間、休止状態のセッションが残りの DAO に使用できなくなります。投げているエラーはこれです。

Caused by: org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

助言がありますか?

データベースからいくつかのデータを抽出してプロパティ クラスを作成し、PropertyPlaceholderConfigurerを拡張する作成したクラスに設定しようとしています。

これがクラスです

 public class PropertiesSourceImpl extends PropertyPlaceholderConfigurer{

public ConfigurationSource configurationSource;

public Properties properties;

public void init() {
    for (ConfigurationProperty prop : configurationSource.getEnabledConfigurationPropertiesByType(ConfigurationProperty.PropertyType.MAIL)) {
        System.out.println(prop);
       // properties.setProperty(prop.getPropertyKey(), prop.getPropertyValue());
    }
}

public Properties getProperties() {
    return properties;
}

@Required
public void setConfigurationSource(final ConfigurationSource configurationSource) {
    this.configurationSource = configurationSource;
}

}

そしてここに私の豆の定義

<bean id="propertiesSource" class="nl.greenvalley.digipolis.config.PropertiesSourceImpl" init-method="init">
    <property name="configurationSource" ref="configurationSource"/>
</bean>
4

1 に答える 1

0

最後に解決策を見つけました。休止状態を使用する代わりに、休止状態のセッションとトランザクションが作成される前に、新しいセッションとトランザクションを作成するだけです。

      SessionFactory sessionFactory;

public void init() {
    Session session = sessionFactory.openSession();
    Transaction tx = null;
    try {
        Properties properties = new Properties();
        tx = session.beginTransaction();
        List<ConfigurationProperty> dbProperties = session.createCriteria(ConfigurationProperty.class).list();
        for (ConfigurationProperty property : dbProperties) {
            properties.setProperty(property.getPropertyKey(), property.getPropertyValue());
        }
        setProperties(properties);
        tx.commit();
    } finally {
        session.close();
    }
}
于 2013-11-06T16:04:41.127 に答える