Frage

Also ich bin mit GigaSpaces XAP mit Hibernate-Plugin meiner DB-Tabelle in der ihrem Netz Cache zu laden, leider zur Abfrage des Gitters sie nicht direkt Groß- und Kleinschreibung Suche unterstützen.

Sie boten zwei Lösungen:
1- Verwenden LIKE Abfrage (die gleiche wie SQL), die langsam ist (nicht sogar mit dieser Mühe)
Erstellen 2- eine separate Eigenschaft der Felder Ich mag Groß- und Kleinschreibung haben.

So, jetzt meine Entscheidungen sind:
Erstellen 1- eine zusätzliche Spalte in DB Groß- und Kleinschreibung Bereich hat (Nicht in diesem Leben)
Erstellen 2- eine benutzerdefinierte Datenlader-Plugin für XAP, so dass der Moment, die Daten des Feld geladen wird in einem „ToLower“ properperty gespeichert. (Unterstützt wird aber als letztes Mittel verlassen)

Ich werde auf jeden Fall nicht mit # 1 und ich werde die benutzerdefinierten Datenlader als letztes Ergebnis verlassen. Also meine Idee ist es, ...

class Person {
    String firstName
    String firstNameLower

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

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

Wird diese Arbeit mit Hibernate? Da die GigaSpace Dataloader verwendet Hibernate und meine pojo ist so ziemlich eine Klasse Entity. Ich verwende Hibernate XML-Mapping nicht Annotationen. Die „ToLower“ Felder nicht abgebildet werden. Überwintert Aufruf setXXX () auf allen Gebieten, die zugeordnet werden oder tut sie einige ausgefallene Code Ersatz unter der Haube und stellt nicht die setXXX () Methoden.

Ich bin auch eine Anmerkung zu denken wäre hier gut gebrauchen, aber nicht sicher, wie sie umgesetzt werden oder auch wenn es für diesen Fall möglich ist.

War es hilfreich?

Lösung 2

Für alle Interessierten.

Erstellen Sie einfach einen „tolower ()“ Methode des Feldes und fügen Sie den Index Anmerkung auf, dass und Sie können Ihre pojo Karte die übliche Art und Weise in den Ruhezustand.

Andere Tipps

Hibernate funktioniert Verwendung Proxy-Objekte, aber die Daten immer noch in Ihrem Objekt gespeichert ist und Hibernate werden die Getter / Setter-Implementierungen Sie, nutzen Sie so Ihre Lösung sollte funktionieren, wenn Sie die Kleinbuchstaben Version einstellen wollen, obwohl ich nicht klar bin warum Sie eine separate Instanz-Variable müssen die Kleinversion speichern.

diesen Artikel über die Grundlagen geht von Proxies.

Wenn Sie Hibernate konfigurieren Sie die Felder Zugriffsmethode zu verwenden (und Zugriff nicht direkt auf die Felder) sein Standardverhalten ist es, alle setXXX () -Methode zu verwenden.

ich glaube, in Ihrem Fall die beste Lösung wäre (wenn Hibernate nur für GigaSpace verwendet wird), um die Art und Weise Hibernate lädt die Daten anpassen, durch Definieren eines benutzerdefinierten Typs mit standrd String die Daten zu laden, dann Umwandlung Fall zu senken. ..

Inzwischen, wenn Ihr System kleingeschrieben Daten erfordert, können Sie nicht sicherstellen, dass alle Saiten in die Datenbank eingetragen sind Kleinbuchstaben?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top