If you are using JPA 2.1 (Hibernate 4.3+) you can achieve what you want with @NamedEntityGraph.
Basically, you would annotate your entity like this:
@Entity
@NamedEntityGraph(name = "Persons.noAddress")
public class Person {
@Column
private String name;
@OneToMany(fetch=FetchType.EAGER)
private List<String> address;
}
And then use the hints to fetch Person without address, like this:
EntityGraph graph = this.em.getEntityGraph("Persons.noAddress");
Map hints = new HashMap();
hints.put("javax.persistence.fetchgraph", graph);
return this.em.findAll(Person.class, hints);
More on the subject can be found here.
When you use the fetch graph only fields that you have put inside @NamedEntityGraph will be fetched eagerly.
All your existing queries that are executed without the hint will remain the same.