У меня проблема с Hiberante и Spring.Конфигурация спящего и весеннего сеанса
Когда я получаю сущность, все работает, но если я использую подзадачу, ленивая загрузка не выполняется из-за закрытой сессии ... почему спящий сеанс закрывается так рано? Не можете дождаться выхода из службы или сделать один сеанс на поток?
Это моя конфигурация
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>com.cinebot.db.entity</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
Это мой дао:
@Transactional
public class Dao {
@Autowired
private SessionFactory sessionFactory;
public Session getSession(){
return sessionFactory.getCurrentSession();
}
@SuppressWarnings("unchecked")
public <T> T get(Class<T> classe, Serializable id) throws Exception {
if(id==null) return null;
T obj = (T) getSession().get(classe, id);
return obj;
}
}
и это, где я получаю сообщение об ошибке (getEventi() лениво загрузится) внутри @Service класс:
Spettacoli spettacolo = dao.get(Spettacoli.class, spettacoloId);
if(spettacolo.getEventi().getScadenza()>0) throw new LogicalException("Spettacolo scaduto");
Где вы обращаетесь к свойствам объекта? –
в классе @Service сразу после получения этой сущности с getSession(). Get() – Tobia
Можете ли вы показать код метода службы здесь, включая метод dao? Нужно взглянуть на аннотацию транзакции –