| The fix applied for this issue 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.
@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;
Until 5.2.16, the JPA meta model class generated for this entity contains a SetAttribute for `readers`:
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).
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.
CriteriaQuery<Doc> q = b.createQuery(Doc.class);
Root<Doc> docR = q.from(Doc.class);
docR.fetch(Doc_.readers);
|