hibernate a createSQLQuery
Ivan Polák
info na infoportal.sk
Středa Únor 18 18:48:08 CET 2009
tak si aj sam odpoviem, snad to niekomu pomoze:
treba nastavit transakcny mechanizmus pomocou AOP nasledovne:
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true" propagation="NEVER"/>
<tx:method name="find*" read-only="true" propagation="NEVER"/>
<tx:method name="save*" rollback-for="Exception"/>
<tx:method name="update*" rollback-for="Exception"/>
<tx:method name="delete*" rollback-for="Exception"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<tx:annotation-driven transaction-manager="txManager"/>
<aop:config>
<aop:pointcut id="serviceOperation" expression="execution(*
com.*.service.impl.*..*ManagerImpl.*(..))"/>
<aop:advisor advice-ref="txAdvice"
pointcut-ref="serviceOperation"/>
</aop:config>
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
Ivan
Info wrote / napísal(a):
> zdravim konferenciu,
>
> pouzivam Hibernate a Spring. potrebujem vykonat jeden update nad DB mimo
> klasickeho pristupu Hibernate pomocou prikazu createSQLQuery:
>
> public void updateZdroj(final Long id) {
>
> final HibernateCallback callback = new HibernateCallback() {
> public Object doInHibernate(final Session session) throws
> HibernateException {
> session.beginTransaction();
> int result = session.createSQLQuery("update zdroj set hodnota =
> hodnota + 1 where id = " + id).executeUpdate();
> session.getTransaction().commit();
> return result;
> }
> };
> getHibernateTemplate().execute(callback);
> }
>
> tento kod je v triede ZdrojDaoHibernate (implements ZrojDao).
>
> skusal som aj dat
> @Transactional (propagation=Propagation.REQUIRED)
> public interface ZdrojDao extends GenericDao<Carrier, Long> {
>
> aj konktrentne nad funkciu updateZdroj:
> @Transactional (readOnly=false)
> void updateZdroj(Long id);
>
> a skusal som aj dat parameter Hibernate:
>
> <prop key="hibernate.current_session_context_class">thread</prop>
>
> bohuzial nic nepomohlo chyba je vzdy nasledovna:
>
> org.hibernate.HibernateException: No Hibernate Session bound to thread, and
> configuration does not allow creation of non-transactional one here
> org.springframework.orm.hibernate3.SpringSessionContext.currentSession(SpringSessionContext.java:63)
> org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:574)
>
>
> nepoznate niekto presny postup ako pouzivat createSQLQuery?
>
> dakujem
>
> Ivan
>
> ________________________________________________
> Message sent using Webmail 2.7.9
>
>
>
Další informace o konferenci Konference