Encountered the same issue with Hibernate 5.4.1.Final when using @ManyToOne(fetch = FetchType.LAZY) and final @Id accessors.
Dropping the final keyword is working just fine.