I am using Tapestry 5.4, and integrating datanucleus using tynamo.

In my page.java, i get some data to show in page.tml:
@CommitAfter
public List<Product> getResults() {
       String filter = getFilter();
       List<Product> resultados = 
getDao().getStockDao().getExistenciasGeneralesWidthProductFilter(filter);
      return resultados;
}
The problem is that I always get the same results (the same I got from firs 
invocation of my page), but I am sure the results should change because I 
change the underlying rows in db between invocations of my page (committing 
changes, obviously)

I had traced many executions path and I am sure, I get a new PersistenceManager 
for each request.

If I replace the results from JDO with a random generated result list of 
Products, I get the page with random result in each invocation, as expected. So 
this happen only with JDO results.

More strange is that if I make the following changes (iterate the results), I 
get the final page changed on every request as expected from intervening db 
changes:

@CommitAfter
public List<Product> getResults() {
       String filter = getFilter();
       List<Product> resultados = 
getDao().getStockDao().getExistenciasGeneralesWidthProductFilter(filter);
       for (Product p : resultados) {
           System.out.println(p.getName() + ":" + 
p.getExistenciasCorporativas().hashCode());
           for (Almacen a : p.getExistenciasCorporativas().keySet()) {
                System.out.println("   " + a.getNombre() + ": " + 
p.getExistenciasCorporativas().get(a).getUnits().intValue());
           }
        }
      return resultados;
} 


... and more strange, the output I get on console is always the same (the 
results of the firsts invocation of the page).... but the page shows the 
modified results expected from direct modification of the db.

I Know tapestry weave my page.java, I think that by some reason the weaving is 
replacing variable resultados with a cached value and using it in place of the 
returned value from JDO, but I do not understand why it does so only with JDO 
results and not with the manual results and why iterating the JDO results make 
the template get the updated results while then iteration on page.java get 
always the first results ever gotten.

¿Maybe the kind on List wrapper of datanucleus ?

Any idea will be appreciated. 
Saludos. Atte. Yazmín Georgina Quintal Moo Local 63 y 64 de Plaza de la 
Tecnología. Villahermosa, Tab. Tel 993 1311688 Cel. 9932 476367

Reply via email to