your @Transactional(propagation=SUPPORTS)
means that it will run in a transaction, if one is present, but unless one is started before invocation, there is no transaction. the default propagation is REQUIRED
which will start one if one is not already present, and will participate in one if there is.
also, it doesn't appear that there's a transactionManager configured. you may want to use something like the following;
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManager" ref="entityManager"/>
</bean>