Frage

Kombinieren Verschlüsse (FCM) und Generika, wäre es möglich, vollständig zu haben typsicher Kriterien.

// The following works without a cast as Foo.id is a 'long' field.
List<Long> ids = session.createCriteria(Foo.class)
                        .setProjection(Foo#id)
                        .list();

// The following is a compilation error, as Foo.bar is defined as an int, and not a string
session.createCriteria(Foo.class)
       .addRestriction(Restrictions.eq(Foo#bar,"blah"))
       .list();

Ich habe die JPA 2.0-Spezifikation für typsichere Kriterien lesen. Aber es ist immer noch etwas fehlt.

Außerdem, ich bin nur mit Kriterien hier als ein Beispiel für die Typsicherheit von Code im Allgemeinen zu verbessern. Ich benutzte die statische Typisierung von Java mir schwer Code schneller zu lassen. Aber als Ergebnis bekomme ich von Zeit zu Zeit durch die Teile meines Codes, die Eingabe ignoriert gebissen. Zum Beispiel HQL-Abfragen.

War es hilfreich?

Lösung

Der Code Sie beschreiben, verwendet keine Schließungen aber Literalen ( Methode Literale ). Wie die gute alte Klasse wörtlichen . Diese könnten in einem Kriterien-API helfen. Die JPA 2 Quellcode Generation work-around für eine typsichere Abfrage-Schnittstelle könnte es ersetzt werden. Wenn wird es Teil von JDK7 sein.

Andere Tipps

Wie Thomas weist darauf hin, bedeutet dies nicht unbedingt Verschlüsse erfordern. Es ist alles in der Luft zur Zeit, da niemand weiß so recht, was Vorschlag betrachtet wird. Es ist nicht klar, ob FCM tatsächlich die Grundlage des Vorschlags ist es, zumal Stephen Colebourne als susprised wie jemand über die Ankündigung zu sein schien.

Eine Menge Leute zeigen auf Neal Gafter der auf mysteriöse Weise überarbeitete-mehr-oder-weniger-rechts- spec als Hinweis darauf, was Verschlüsse nehmen könnte bilden as-the-Devoxx-Präsentation-Ankündigung-Verschlüsse-wurde-gegeben wird. Wohlgemerkt, der überarbeitete Vorschlag sieht (ästhetisch) eher wie FCM!

Das spec enthält die Art von Referenzen Sie beziehen (unter ‚Methode Referenzen‘ in der oberen Zeile), und natürlich hat FCM gleich. Ja, das würde auf jeden Fall Sie können vorschlagen machen. Mein allererster Gedanke, als darüber zu lesen war, wie es JPA / Hibernate beeinflussen würde, und / oder unsere eigenen Abstraktionsschichten um gleiche, in dieser Hinsicht. Typesafe, refactorable Methode Referenzen in Ihren Kriterien? Hell yeah.

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