KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I would like to use JPA2 Criteria API with metamodel objects, which seems to be pretty easy: ... Root<JPAAlbum> albm = cq.from(JPAAlbum.class); ... albm.get(JPAAlbum_.theme) ... ; but this Root.get always throws a NullPointerException . JPAAlbum_.theme was automatically generated by Hibernate and looks like public static volatile SingularAttribute<JPAAlbum, JPATheme> theme; but it's obviously never populated. Am I missing a step in the initialization of the framework ? EDIT: here is a snippet of how I use JPA and the metamodel when it's crashing: 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_ is a class, so I just import before) and the associated stacktrace: 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) EDIT 2: In the JBoss EntityManager guide, I can see that When the Hibernate EntityManagerFactory is being built, it will look for a canonical metamodel class for each of the managed typed is knows about and if it finds any it will inject the appropriate metamodel information into them, as outlined in [JPA 2 Specification, section 6.2.2, pg 200] I could also verify with for (ManagedType o : em.getMetamodel().getManagedTypes()) { log.warn("___") ; for (Object p : o.getAttributes()) {
Tags (comma-separated)
Save Edits
Cancel