JPA MySQL DOUBLE (6,2) mit LIKE filtern

Diskutiere MySQL DOUBLE (6,2) mit LIKE filtern im Data Tier Forum; Hallo zusammen, ich habe folgendes Problem. Und zwar habe ich folgende Methode: public List<Mitarbeiter> getFilteredMitarbeiter(Optional<String>...

  1. sven-meye
    sven-meye Neues Mitglied
    Hallo zusammen,

    ich habe folgendes Problem. Und zwar habe ich folgende Methode:
    Code (Java):

    public List<Mitarbeiter> getFilteredMitarbeiter(Optional<String> kuerzel, Optional<String> nachname, Optional<String> vorname, Optional<String> stundensatz) {

        EntityManager entityManager = TTREntityManagerFactory.getInstance().createEntityManager();
        CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
        CriteriaQuery criteriaQuery = criteriaBuilder.createQuery();
        Root mitarbeiter = criteriaQuery.from(Mitarbeiter.class);

        kuerzel.ifPresent(k -> criteriaQuery.where(criteriaBuilder.like(criteriaBuilder.upper(mitarbeiter.get("kuerzel")), "%" + k.toUpperCase() + "%")));
        nachname.ifPresent(n -> criteriaQuery.where(criteriaBuilder.like(criteriaBuilder.upper(mitarbeiter.get("nachname")), "%" + n.toUpperCase() + "%")));
        vorname.ifPresent(v -> criteriaQuery.where(criteriaBuilder.like(criteriaBuilder.upper(mitarbeiter.get("vorname")), "%" + v.toUpperCase() + "%")));
        stundensatz.ifPresent(s -> criteriaQuery.where(criteriaBuilder.like(mitarbeiter.get("stundensatz"), "%" + s + "%")));

        RepositoryUtils<List<Mitarbeiter>> repositoryUtils = new RepositoryUtils<>();
        JpaFunction<List<Mitarbeiter>> function = () -> entityManager.createQuery(criteriaQuery).getResultList();
        return repositoryUtils.withoutTransaction(entityManager, function);
    }
     
    Nun habe ich das Problem, das der Stundensatz in der Datenbank als DOUBLE (6,2) gespeichert ist. Diesen Wert kann ich nun mit der Übergabe eines Strings mit LIKE nicht filtern. Er wirft immer eine Exception. Bei der anderen Entität, hat das mit einem INTEGER sehr gut funktioniert. Nun möchte ich den DOUBLE ebenfalls mit LIKE filtern können. Leider finde ich dazu nicht wirklich etwas, das auch funktioniert, im Internet. Auch wenn ich konvertiere, wirft er weiter Exceptions. Wie geht das richtig? Ich versuche dies nun schon den halben Nachmittag und könnte wirklich Hilfe gebrauchen.

    Kurz und bündig: Wie filtere ich einen DOUBLE-Wert mit JPA Criteria LIKE?

    Freundliche Grüsse & vielen Dank
    sven_meye
     
  2. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)
  3. Thallius
    Thallius Bekanntes Mitglied
    Kurz und bündig:

    Preise und andere Währungsdaten werden immer als cent (integer, long) gespeichert. Niemals als double. Alleine die Rundungsfehler bei double brechen dir bei Geldbetragsrechnungen irgendwann immer das Genick.

    Gruß

    Claus
     
  4. mrBrown
    mrBrown Bekanntes Mitglied
    Warum sollte man denn Double mit LIKE suchen wollen? o_O
     
  5. Thallius
    Thallius Bekanntes Mitglied
    Weil man mathematisch nicht besonders bewandert ist?
     
  6. sven-meye
    sven-meye Neues Mitglied
    Naja, ich finde gerade keinen anderen Weg, z.B. alle Werte, die die Zahl 2 enthalten, herauszufiltern. Wenn es was anderes gibt, dann tell me.
     
  7. mrBrown
    mrBrown Bekanntes Mitglied
    Warum sind denn alle Werte, die eine 2 enthalten interessant?
    Ich mein, 253937 und 0,02 haben ja schon ziemlich wenig gemeinsam...
     
  8. sven-meye
    sven-meye Neues Mitglied
    Naja, ich mache, was mir aufgetragen wird. So läuft das nun mal.
     
  9. mrBrown
    mrBrown Bekanntes Mitglied
    Oder man weist auf sinnloses Design in Verbindung mit sinnlosen Anforderungen hin.

    Ich weiß was mir lieber ist...
     
  10. Schau dir jetzt hier den Kurs an und lerne Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)
Die Seite wird geladen...

MySQL DOUBLE (6,2) mit LIKE filtern - Ähnliche Themen

double Array in MySQL Datenbank speichern/laden
double Array in MySQL Datenbank speichern/laden im Forum Datenbankprogrammierung
MySQL auf Ubuntu 16.04 für extern erreichbar machen
MySQL auf Ubuntu 16.04 für extern erreichbar machen im Forum Plauderecke
Update auf Mysql läuft nicht durch
Update auf Mysql läuft nicht durch im Forum Datenbankprogrammierung
JTable update mit MySQL Datenbank
JTable update mit MySQL Datenbank im Forum Java Basics - Anfänger-Themen
Javafx Combobox Abfrage aus mysql
Javafx Combobox Abfrage aus mysql im Forum AWT, Swing, JavaFX & SWT
Thema: MySQL DOUBLE (6,2) mit LIKE filtern