Domanda

combinando chiusure (FCM) e generici, sarebbe possibile disporre di criteri completamente indipendente dai tipi.

// 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();

Ho letto il 2.0 spec APP per i criteri di type-safe. Ma la sua ancora un po 'carente.

Inoltre, sto solo usando criteri come esempio di migliorare il tipo di sicurezza di codice in generale. Ho usato la tipizzazione statica di java pesantemente per farmi codice più veloce. Ma come risultato ho anche morso di tanto in tanto dalle parti del mio codice che ignorano la digitazione. Per esempio HQL interroga.

È stato utile?

Soluzione

Il codice che stai descrivendo non usa le chiusure, ma letterali ( noreferrer metodo letterali ). Come il buon letterale . Questi potrebbero aiutare in un'API criteri. JPA 2 sorgente di generazione di codice per aggirare per un'interfaccia di query dai tipi potrebbe essere sostituito con esso. Se sarà parte di JDK7.

Altri suggerimenti

Come Thomas sottolinea, questo non strettamente richiede chiusure. E 'tutto in aria al momento, dato nessuno sa bene cosa proposta che viene guardato. Non è chiaro se FCM è in realtà la base della proposta, in particolare dato che Stephen Colebourne sembrava essere come susprised come chiunque circa l'annuncio.

Un sacco di persone stanno indicando di Neal GDopo misteriosamente-rivista-più-o-meno-destra come-il-Devoxx-presentazione-annuncia-chiusure-era-essere-dato spec come un suggerimento da quale forma chiusure potrebbero prendere. Intendiamoci, la proposta riveduta sguardi (esteticamente) un po 'come FCM!

Che spec include il tipo di riferimenti si fa riferimento a (sotto 'Riferimenti Metodo' nella riga sopra), e, naturalmente, FCM ha la stessa. Sì, questo sarebbe sicuramente farà suggerire possibili. Il mio primo pensiero quando la lettura di questo era come sarebbe influenzare JPA / Hibernate, e / o di nostri livelli di astrazione intorno stessa, a questo proposito. Typesafe, metodo refactorable riferimenti ai suoi criteri? Hell yeah.

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