I have an entity class set up in Java, with a many-to-many relationship to another class. However, rather than selecting the entire entity collection, I’d like to select only a property from the child entities. The reason for doing this is that it will lower the amount of data being loaded into the system as I don’t always need the entire entity depending on my view.
This is what I have so far:
@Entity
public class Disposition {
...
@ManyToMany
private List<Project> projects;
...
}
This works fine and retrieves a list of Project instances. However, I don’t want to get all the Projects for the Disposition; I only want to retrieve Project.name.
The only solution I’ve been able to come up with so far is using the @Formula annotation but I’d like to avoid this if possible since it requires writing native SQL instead of HQL.
This view is read-only so I don’t expect any changes to the data to be persisted.
you can use hql to only get the child’s name. It would look something like
you would have to tailor the variable names in that, and use a parameterized query to replace the ? with the id of the parent.
It is common to have tailored DAO methods for exactly this sort of situation.