Like I told you in Hibernate.initialize() does not initialize lazy @Basic fields, it’s probably better to use a DTO mapping for this instead.
I see though that your mapping is unnecessarily complex. You do see that initializing the collection causes a join to the target table? So you don’t gain anything from making the attributes in Language
lazy.
I don’t understand why you are making name
and code
lazy, but I would suggest you to not do that. If you care about caching the collection, you can annotate the collection with the @Cache
annotation. Also see the documentation