I can only give you some hints for tracking down the issue here:

1) Be aware of JDO's fetchgroups [1]
2) Be aware, that your domain object's do behave in unpredictable ways once 
they get detached from the persistence layer. Make sure you do your data 
processing within a transaction's life-cycle.

If you think, you discovered a bug with JDO (Datanucleus) or Apache Isis, it 
would help if you could setup some example eg. at github for us to reproduce 
the issue.

Cheers, Andi

[1] http://www.datanucleus.org/products/accessplatform_4_2/jdo/fetchgroup.html

On 2018/11/28 01:02:58, chidii....@live.com.ar <chidii....@live.com.ar> wrote: 
> Hi we're doing a final project using isis and we get to the part of the 
> queries and when we tried to make a query that need information of two or 
> more tables we saw that we can't use for example inner join (sql) so we want 
> to know if there is any form of doing a join on the query.
> 
> We also tried to use object's logic to make this join on this way:
> 
> 
> @SuppressWarnings("unlikely-arg-type")
> public List<Ficha> findByTecnico(Integer documento) {
>     List<TecnicoFicha> tecnicoFicha = auxFindByTecnico(documento);
>     List<Ficha> aux= repositoryService.allMatches(new 
> QueryDefault<>(Ficha.class, "tecnicoBusqueda"));
>     List<Ficha> contador=new ArrayList<Ficha>();
>     for (int k=0; k<aux.size(); k++) {
>         for(int i=0; i<aux.get(k).getTecnicos().size();i++) {
>             for(int j=0; j<tecnicoFicha.size();j++) {
>                 if(aux.get(k).getTecnicos().equals(tecnicoFicha.get(j))) {
>                     contador.add(aux.get(k));
>                 }
>             }
>         }       
>     }
>     return contador;
> 
> }
> 
> 
> private List<TecnicoFicha> auxFindByTecnico(Integer documento){
>     Tecnico tecnico = repositoryService.uniqueMatch(new 
> QueryDefault<>(Tecnico.class, "auxTecnico", 
>     "documento", documento));
> 
>     List<TecnicoFicha> aux = repositoryService.allMatches(new 
> QueryDefault<>(TecnicoFicha.class, 
>    "auxTecnico2"));
>     List<TecnicoFicha> contador = new ArrayList<TecnicoFicha>();
>     for(int i=0; i<aux.size();i++) {        
>         if (aux.get(i).getDocumento().equals(tecnico.getDocumento())){
>             contador.add(aux.get(i));
>         }
>     }
>     return contador;        
> }
> 
> 
> 
> The private method auxFindByTecnico actually returns a List of TecnicoFicha 
> we're not having problems there (all queries return all matches of a Class).
> 
> The problem is that the Object Ficha contains a List of TecnicoFicha (called 
> Tecnicos) and we need to return all objets of Ficha where if any of 
> Tecnicos's object equals any of the tecnicoFicha's object (returned by method 
> auxFindByTecnico) then add that Ficha on an aux List called contador.
> 
> I don't see any problem on my Code i think this should work but when i debug 
> the App tecnicoFicha has all i need, aux do too but contador don't return 
> anything.
> 
> Thanks for your help.
> 
> 

Reply via email to