We're updating the issue view to help you get more done. 

NPE for Criteria query containing fetch join as a regression of HHH-12338

Description

I'm creating this new issue from an error report added recently to HHH-12338, which nobody seemed to notice.

The fix applied for causes a regression when @ElementCollection and @CollectionTable is used. The following mapping taken from an entity used to work until Hibernate 5.2.16. It causes a NPE for criteria queries starting from 5.2.17.

1 2 3 4 5 6 7 8 9 @ElementCollection @CollectionTable( name = "doc_reader", joinColumns = @JoinColumn(name = "doc_id", nullable = false), foreignKey = @ForeignKey(CONSTRAINT) ) @Column(name = "reader", nullable = false) @Convert(converter = RoleConverter.class) private Set<Role> readers; // Role is an interface whose instances are represented in the database by names (strings), converted to/from by RoleConverter.

Until 5.2.16, the JPA meta model class generated for this entity contains a SetAttribute for readers:

1 public static volatile SetAttribute<Doc, Role> readers;

Using 5.2.17, this becomes a SingularAttribute instead, which is obviously wrong (and it seems that @ElementCollection is not taken into account).

1 public static volatile SingularAttribute<Doc, Set<Role>> readers;

As a result, the following code then throws a NPE when creating a fetch join (last line). Debugging showed that Doc_.readers is null.

1 2 3 CriteriaQuery<Doc> q = b.createQuery(Doc.class); Root<Doc> docR = q.from(Doc.class); docR.fetch(Doc_.readers);

Environment

Observed with both Wildfly 10.1 and 12.

Status

Assignee

Chris Cranford

Reporter

Thorsten Möller

Labels

Worked in

5.2.16

Feedback Requested

None

Feedback Requested By

None

backPortable

None

Community Help Wanted

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

backportReEvaluate

None

Components

Fix versions

Affects versions

5.2.17
5.3.0.Final

Priority

Major