Question

combiner les fermetures (FCM) et les génériques, serait-il possible d'avoir des critères typées pleinement.

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

J'ai lu la spécification JPA 2.0 des critères typées. Mais son manque encore un peu.

D'ailleurs, je suis juste en utilisant des critères comme exemple d'améliorer le type de sécurité du code général. Je le typage statique de java fortement de me laisser plus vite code. Mais par conséquent, je piqués maintenant et puis par les parties de mon code qui ne tiennent pas compte taper. Par exemple les requêtes HQL.

Était-ce utile?

La solution

Le code que vous décrivez ne pas utiliser les fermetures mais littéraux ( littéraux méthode ). Tout comme le bon vieux classe littérale . Ceux-ci pourraient aider à une API de critères. JPA 2 code source génération travail autour pour une interface de requête de type sécurisé pourrait être remplacé avec elle. Si il fera partie de JDK7.

Autres conseils

Thomas souligne, cela ne nécessite pas strictement les fermetures. Il est tout en l'air au moment, étant donné que personne ne sait exactement ce que la proposition est à l'étude. On ne sait pas si la FCM est en fait la base de la proposition, en particulier étant donné que Stephen Colebourne semblait être aussi susprised que personne de l'annonce.

Beaucoup de gens pointent Neal Gafter de mystérieusement révisé-plus ou moins droite comme-la-Devoxx-présentation-fermeture-annonçant était-être donné par spec comme une indication quant à la forme de fermetures pourraient prendre. Rappelez-vous, la proposition révisée ressemble (esthétique) un peu comme la FCM!

Cette spécification n'inclut le genre de références que vous faites référence à (sous la rubrique « Références Méthode » dans la ligne ci-dessus), et bien sûr la FCM a le même. Oui, ce serait certainement vous suggérez possible. Ma première pensée lors de la lecture sur c'était comment il affecterait JPA / Hibernate, et / ou nos propres couches d'abstraction autour de même, à cet égard. Typesafe, références de méthode refactorable dans vos critères? Hell yeah.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top