It's expensive because instead of creating a proxy for ManyToOne and entries in lazy collections (i.e. all in memory), you will have to look for the value on the other side (i.e. do one or more extra lookup).