Nível de isolamento SERIALIZÁVEL no Spring-JDBC

talvez alguém possa me ajudar com um problema transacional no Spring (3.1) / Postgresql (8.4.11)

Meu serviço transacional é o seguinte:

@Transactional(isolation = Isolation.SERIALIZABLE, readOnly = false)
@Override
public Foo insertObject(Bar bar) {

            // these methods are just examples
            int x = firstDao.getMaxNumberOfAllowedObjects(bar)
            int y = secondDao.getNumerOfExistingObjects(bar)
            // comparison
            if (x - y > 0){
                  secondDao.insertNewObject(...) 
            }
            ....
}

O Webapp de configuração do Spring contém:

@Configuration 
@EnableTransactionManagement 
public class ....{
    @Bean
    public DataSource dataSource() {
        org.apache.tomcat.jdbc.pool.DataSource ds = new DataSource();

        ....configuration details

        return ds;
    }

    @Bean
    public DataSourceTransactionManager txManager() {
        return new DataSourceTransactionManager(dataSource());
    }
}

Digamos que um pedido "x" e um pedido "y" sejam executados simultaneamente e cheguem ambos ao comentário "comparação" (método insertObject). Em seguida, ambos podem inserir um novo objeto e suas transações são confirmadas.

Por que não estou tendo uma RollbackException? Tanto quanto eu sei, é para isso que serve o nível de isolamento Serializável. Voltando ao cenário anterior, se x conseguir inserir um novo objeto e confirmar sua transação, a transação de "y" não deve ter permissão para confirmar, pois há um novo objeto que ele não leu.

Isto é, se "y" puder ler novamente o valor de secondDao.getNumerOfExistingObjects (bar), perceberá que existe um novo objeto a mais. Fantasma?

A configuração da transação parece estar funcionando bem:

Para cada pedido, posso ver a mesma conexão para firstDao e secondDaoUma transação é criada toda vez que insertObject é invocado

Os primeiro e segundo DAOs são os seguintes:

@Autowired
public void setDataSource(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);
}

@Override
public Object daoMethod(Object param) {

        //uses jdbcTemplate

}

Tenho certeza de que estou perdendo alguma coisa. Qualquer ideia?

Obrigado pelo seu tempo,

Javier