Pregunta

Así que estoy usando GigaSpaces XAP con Hibernate plugin para cargar mi mesa en el DB de su memoria caché de cuadrícula, por desgracia para la consulta de la red que no apoyan directamente entre mayúsculas y minúsculas búsquedas.

Se ofreció 2 soluciones:
1- Uso como la consulta (igual que SQL) que es lento (incluso no se molestó con esto)
2- Crear una propiedad separada de los campos que quiero tener entre mayúsculas y minúsculas.

Así que ahora mis opciones son:
1- Crear una columna adicional en la base de datos para tener campo entre mayúsculas y minúsculas (No en este tiempo de vida)
2- Crear un plugin cargador de datos personalizada para XAP de tal manera que el momento se cargan los datos del campo se almacena en un properperty "ToLower". (Apoyado pero dejará como último recurso)

Estoy definitivamente no va por el número 1 y voy a dejar el cargador de datos personalizados como último resultado. Así que mi idea es ...

class Person {
    String firstName
    String firstNameLower

    public void setFirstName(String firstName) {
        this.firstName = firstName

        this.firstNameLower = firstName.toLowerCase(...);
    }
}

¿Este trabajo con Hibernate? A medida que el dataloader GigaSpace utiliza Hibernate y mi POJO es más o menos una clase de entidad. Estoy usando mapeo XML Hibernate no anotaciones. No se asignan los campos "ToLower". ¿El Hibernate llamada setXXX () en todos los campos que se asignan o se hacer un poco de código de sustitución de fantasía bajo el capó y no llama a la setXXX () métodos.

También estoy pensando en una anotación sería un buen uso aquí, pero no está seguro de cómo ponerlas en práctica o incluso si es posible para este caso.

¿Fue útil?

Solución 2

Para cualquier persona interesada.

Simplemente crear un "tolower ()" método del campo y añadir la anotación índice en eso y usted puede asignar su POJO para hibernar la forma habitual.

Otros consejos

Hibernate utilizan objetos proxy, pero los datos aún se guarda en el objeto y Hibernate usará las implementaciones getter / setter suministrados por el usuario, por lo que su solución debe funcionar si se desea establecer la versión en minúsculas, aunque no estoy clara por qué necesita una variable de instancia independiente para almacenar la versión en minúsculas.

este artículo trata cuestiones básicas de proxies.

Si configura Hibernate para utilizar los campos de descriptor de acceso método (y no acceder directamente a los campos) su comportamiento predeterminado es utilizar todos los métodos de la setXXX ().

Creo que en su caso la mejor solución sería (si Hibernate sólo se utiliza para GigaSpace) para personalizar el modo de hibernación cargar los datos, mediante la definición de un tipo personalizado utilizando StringType standrd para cargar los datos y luego convertirlo a minúsculas. ..

Mientras tanto, si el sistema requiere datos minúsculas, puede que no se asegura de todas las cadenas introducidos en la base de datos son minúsculas?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top