Atributos de metamodelo estático JPA / Hibernate no poblados - NullPointerException

Me gustaría usar la API de criterios JPA2 con objetos de metamodelo, lo que parece ser bastante fácil:

...
Root<JPAAlbum> albm = cq.from(JPAAlbum.class);
... albm.get(JPAAlbum_.theme) ... ;

pero este Root.get siempre arroja unNullPointerException. JPAAlbum_.theme fue generado automáticamente por Hibernate y parece

public static volatile SingularAttribute<JPAAlbum, JPATheme> theme;

pero obviamente nunca está poblado.

¿Me estoy perdiendo un paso en la inicialización del marco?

EDITAR: Aquí hay un fragmento de cómo uso JPA y el metamodelo cuando falla:

    CriteriaBuilder cb = em.getCriteriaBuilder();

    CriteriaQuery<JPAAlbum> cq = cb.createQuery(JPAAlbum.class) ;
    Root<JPAAlbum> albm = cq.from(JPAAlbum.class);
    cq.where(cb.equal(albm.get(JPAAlbum_.theme).get(JPATheme_.id),
                        session.getTheme().getId())) ;

(JPAAlbum_ es una clase, así que soloimport antes) y el stacktrace asociado:

Caused by: java.lang.NullPointerException
    at org.hibernate.ejb.criteria.path.AbstractPathImpl.get(AbstractPathImpl.java:138)
    at net.wazari.dao.jpa.WebAlbumsDAOBean.getRestrictionToAlbumsAllowed(WebAlbumsDAOBean.java:55)

EDITAR 2:

En la guía JBoss EntityManager, puedo ver que

Cuando se construye la Hibernate EntityManagerFactory, buscará una clase de metamodelo canónico para cada uno de los tipos gestionados que conoce y, si encuentra alguno, inyectará la información de metamodelo adecuada en ellos, como se describe en [Especificación JPA 2, sección 6.2 .2, pág. 200]

También podría verificar con

     for (ManagedType o : em.getMetamodel().getManagedTypes()) {
            log.warn("___") ;
            for (Object p : o.getAttributes()) {
                log.warn(((Attribute)p).getName()) ;
            }
        }

que Hibernate conoce mi metamodelo, los nombres de los atributos están escritos, sin embargo

   log.warn("_+_"+JPAPhoto_.id+"_+_") ;

permanece desesperadamente vacío ...

EDITAR3: aquí está elJPAAlbum entidad y esclase metamodelo.

¿Qué más puedo decir sobre mi configuración ...

Yo uso hibernat3.5.6-Final (según META-INF / MANIFEST.MF),

desplegar en Glassfish3.0.1

de Netbeans6.9.1;

y la aplicación se basa en EJB3.1,

¡Espero que ayude!

EDITAR 4:

desafortunadamente, la prueba JUnit conduce a la misma excepción:

java.lang.NullPointerException
    at org.hibernate.ejb.criteria.path.AbstractPathImpl.get(AbstractPathImpl.java:138)
    at net.wazari.dao.test.TestMetaModel.foo(TestMetaModel.java:55)

Un proyecto mucho más simple está disponibleaquí/tarball. Solo contiene mis entidades y su metamodelo, además de una prueba JUnit (si falla con el metamodelo, la barra está bien con la consulta habitual.

EDITAR 5:

Debería poder reproducir el problema descargando eltarball, construyendo el proyecto:

ant compile
or
ant dist

e inicie la prueba JUnitnet.wazari.dao.test.TestMetaModel

 CLASSPATH=`sh runTest.sh` java org.junit.runner.JUnitCore  net.wazari.dao.test.TestMetaModel

(editarrunTest.sh para apuntar CLASSPATH a la ubicación correcta de su jar JUnit4-5)

Todas las dependencias de hibernación que uso deben incluirse en el archivo.

Respuestas a la pregunta(7)

Su respuesta a la pregunta