¿Cómo editar un objeto Spring Pageable?

Necesito poder editar un objeto Pageable, más específicamente uno de los Sorts.

Tengo algo de DTO Memberque tiene una propiedad emailAddress. Desconocido para el cliente, esta es información recopilada por una consulta de 2 entidades diferentes, ya sea Accounto Invite. A Membersiempre tiene uno de estos. Esto funciona bastante bien, hago una consulta JPA estándar en un repositorio y recopilo la información requerida antes de transformarla en un DTO.

Ahora queremos ordenar por este atributo referenciado. Esta bien. Puedo crear una consulta que contenga algo como lo ORDER BY coalesce(i.emailAddress, a.emailAddress) ASCque funciona bien. Si el cliente no pasa ninguna clasificación en el objeto Pageable, solo uso esta clasificación, si el cliente pasa la clasificación, llamo a una versión diferente de la consulta sin esta clasificación predeterminada.

Pero ahora el cliente quiere ordenar esta emailAddresspropiedad y comienza el problema. Pasar directamente el Pageableal Repositoryno funciona porque no hay propiedad emailAddress. ¡Así que no pensé en preocuparme! Simplemente revisemos mi código si hay una clasificación en esta propiedad y hagamos una versión especial de mi consulta según los parámetros.

if (pageable.getSort().isSorted()) {
    Sort.Order emailAddressOrder = pageable.getSort().getOrderFor("emailAddress");
    if (emailAddressOrder != null) {
        if (emailAddressOrder.getDirection() == Sort.Direction.ASC)
            members = memberRepo.findInProjectDefaultSortAsc(projectId, skipFullName, fullName, pageable);
        else
            members = memberRepo.findInProjectDefaultSortDesc(projectId, skipFullName, fullName, pageable);
    }
    else
        members = memberRepo.findInProject(projectId, skipFullName, fullName, pageable);
}
else
    members = memberRepo.findInProjectDefaultSortAsc(projectId, skipFullName, fullName, pageable);

No se ve superpretty pero debería funcionar bien? Incorrecto, porque PageableTODAVÍA contiene la propiedad no válida emailAddress.

Entonces, ¿cómo elimino esta propiedad? Intenté enviarlo a un objeto, PageRequestpero incluso ese objeto de implementación no se puede escribir. Lo que hice ahora es esto:

PageRequest newPageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize());

Y luego paso este nuevo objeto a la consulta. Pero eso parece un poco propenso a errores, y si la entidad PageRequest se expande con propiedades adicionales más adelante, entonces mi objeto solo copia 2 propiedades. ¿Es esto realmente lo mejor que puedo hacer ahora?

Respuesta 1

Mi problema es que JScrollPane no muestra una JTable dentro de ella. Cuando inicializo una tabla sin JScrollPane, todo funciona perfectamente. ¿Cómo hacer que JScrollPane no oculte JTable? vacío privado ...

¿Alguien puede averiguar por qué mi JScrollPane no funciona? Quizás algo que me haya perdido. Me doy cuenta de que esto podría ser una tontería sin más contexto del que he mostrado, pero por favor pregunte y estaré ...

Estoy creando una aplicación muy simple para que pueda entender slf4j, unir bibliotecas, implementar implementaciones de registro, etc. Mi aplicación se basa en el slf4j que usa logback para el registro ...

En mi aplicación RCP Eclipse 3.7 estaba obteniendo PreferenceStore de la siguiente manera: Activator.getDefault (). GetPreferenceStore () que devuelve un IPreferenceStore. Aquí la propia preferencia del activador ...