Domanda

Così sto usando GigaSpaces XAP con Hibernate plugin per caricare la mia tabella di DB nel loro nascondiglio griglia, purtroppo per interrogare la rete che non supportano direttamente case insensitive ricerche.

hanno offerto 2 soluzioni:
1- interrogazione Usa LIKE (uguale a SQL), che è lento (Wont nemmeno con questo)
2- Creare una proprietà separata dei campi che vogliono avere case insensitive.

Così ora le mie scelte sono:
1- Creare una colonna aggiuntiva nel DB di avere campo case-insensitive (non in questo tempo di vita)
2- Creare un plugin di dati loader personalizzato per XAP tale che il momento in cui i dati vengono caricati il ??campo è memorizzato in un properperty "ToLower". (Supportato ma lascerà come ultima risorsa)

sto sicuramente non andare con # 1 e mi lascerà il caricatore di dati personalizzati come ultimo risultato. Quindi la mia idea è quella di ...

class Person {
    String firstName
    String firstNameLower

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

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

Sarà questo lavoro con Hibernate? Come il Dataloader GigaSpace utilizza Hibernate e il mio POJO è praticamente una classe di entità. Sto utilizzando il mapping XML Hibernate non annotazioni. I campi "ToLower" non verranno mappati. Fa Hibernate chiamata setXXX () su tutti i campi che sono mappati o lo fa fare qualche sostituzione del codice di fantasia sotto il cofano e non chiama il setXXX () metodi.

Sto anche pensando un'annotazione sarebbe un buon uso qui, ma non è sicuro come implementare loro o anche se è possibile, per questo caso.

È stato utile?

Soluzione 2

Per chiunque sia interessato.

È sufficiente creare un "tolower ()" il metodo del campo e aggiungere l'annotazione indice su quella ed è possibile mappare il POJO per ibernare il solito modo.

Altri suggerimenti

ibernazione fa oggetti di uso del proxy, ma i dati sono ancora memorizzate nel vostro oggetto e Hibernate userà i getter / setter implementazioni forniti dall'utente, in modo dalla soluzione dovrebbe funzionare se si desidera impostare la versione minuscola, anche se non sono chiare perché avete bisogno di una variabile un'istanza separata per memorizzare la versione minuscola.

questo articolo va oltre le nozioni di base proxy.

Se si configura Hibernate per utilizzare i campi accessor metodo (e non accedere direttamente i campi) il suo comportamento predefinito è quello di utilizzare tutto il metodo del setXXX ().

Credo che nel tuo caso la soluzione migliore sarebbe (se Hibernate viene usato solo per GigaSpace) per personalizzare il modo Hibernate caricare i dati, attraverso la definizione di un tipo personalizzato utilizzando StringType Standrd per caricare i dati poi convertirlo in minuscolo. ..

Nel frattempo, se il sistema richiede dati minuscole, non puoi assicurarsi che tutte le stringhe inserite nella banca dati sono minuscolo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top