NullPointerException in {{LiteralExpression#renderProjection}}. {{ValueHandlerFactory.determineAppropriateHandler( literal.getClass() );}} returns null for enum classes. Triggered when constructing a new result object using a selectCase criteria.
{code:java} @Test public String renderProjection void hhh123Test ( RenderingContext renderingContext ) { // some drivers/servers do not like parameters in the select clause final ValueHandlerFactory.ValueHandler handler EntityManager em = ValueHandlerFactory entityManagerFactory . determineAppropriateHandler createEntityManager ( literal.getClass( ) ) ; if ( ValueHandlerFactory em . isCharacter getTransaction ( literal ) ) { return '\'' + handler . render begin ( literal ) + '\'' ; } else { // insert a few MyEntity instances return handler em . render persist ( literal new MyEntity( ) ) ; } } {code}
Triggered when constructing a new result object using a selectCase criteria em .
{code:java} public static class Foo { enum Status { BAR, BAZ } private final Status foo persist(new MyEntity()) ; public Foo em.flush ( final Status foo ) { this.foo = foo ; } } @Entity public static class Wibble { @Id private int id; } public List<Foo> // query () { for Foo results using construct and selectCase final CriteriaBuilder cb = em.getCriteriaBuilder(); final CriteriaQuery<Foo> query = cb.createQuery(Foo.class); final Root< Wibble MyEntity > root = query.from( Wibble MyEntity .class);
query .select(cb.construct(Foo.class, cb.selectCase() .when(cb.equal(root.get( Wibble_. " id " ), 1), Foo. Status State . BAR FIRST ) .otherwise(Foo. Status State . BAZ NOT_FIRST ) , root.get(org.hibernate.bugs.MyEntity_.id ) ) ) .orderBy(cb.asc(root.get(org.hibernate.bugs.MyEntity_.id))) ; return final List<Foo> foos = em.createQuery(query).getResultList(); assertThat(foos.size(), equalTo(2)); assertThat(foos.get(0).state(), equalTo(Foo.State.FIRST)); assertThat(foos.get(1).state(), equalTo(Foo.State.NOT_FIRST));
em.getTransaction().commit(); em.close(); } @Accessors(fluent = true) @Getter @RequiredArgsConstructor public static class Foo { enum State {FIRST, NOT_FIRST}
private final State state; private final int id; } { code} |
|