Если вы хотите только подмножество свойств объекта и не хотите изменять объект, тогда я предлагаю использовать сводный запрос стиля.
@Entity
@Table(name="test_entity")
public class TestEntity extends BaseDomainObject<Long> {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "name")
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class TestSummary {
private final Long id;
private final String name;
public TestSummary(Long id, String name) {
super();
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
}
Тогда вы можете использовать запрос, подобный этому:
select new TestSummary(te.id, te.name) from TestEntity te
JPA сгенерирует быстрый запрос, который загружает только те поля, которые вы хотите. Я использую это все время при отображении списка сущностей.