나는 많은 프로퍼티를 가진 모델을 가지고 있으며, 그 중 몇 가지 속성 만 가진 간단한 테이블을 생성해야한다.Hibernate 부분적으로 객체를 채우는 것
것은 내가 쉽게 완전히 채워 모델의 목록을 가져올 수의 내가
@Entity
public class SomeData implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private long id;
private String code;
private String someOtherCode;
private String name;
private String address;
private String someOtherOtherCode;
@OneToMany(cascade = CascadeType.ALL)
private Collection<SomeOtherData> someOtherData;
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
private LocalDate dateFrom;
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
private LocalDate dateTo;
//getters and setters
}
로 정의 된 모델을 가지고 있다고 가정 해 봅시다 Query query = entityManager.createQuery("from SomeData");
가 Query query = entityManager.createQuery("select c.name, c.code, c.address from SomeData c");
만 name
, address
및 code
얻기 개체 것은 다르게 작동하는 것 같다. SomeData 객체를 만들고 부분 데이터로 채우는 대신 query.getResultList()
을 사용하는 대신 행을 나타내는 Object
배열 목록을 사용합니다.
내가 요청한 데이터로만 채워진 SomeData 객체의 목록을 나에게주기 위해 Hibernate에게 말할 수있는 방법이 있습니까?
트릭을 수행합니다. 감사! 한 가지 더 빠른 질문입니다. 그 일을하는 좋은 방법입니까? 필자는 테이블을 채우기 위해 데이터 모델을 수정하거나 추가 모델을 만들 수 없으므로 시간과 메모리를 적게 차지한다고 가정하고 있습니다. 내 가정이 정확합니까 아니면 다른 방법으로 최적화해야합니까? – MrPlow
다른 방법으로도이를 수행 할 수 있습니다. 테이블을 분리하여 필요한 데이터 만 나열 할 수 있습니다. 나는이 경우에 더 좋을 것이라고 생각하지만 때로는 옵션이 아닙니다. 그렇게 할 수 없다면 부분적으로 모델을 채워야하는 경우 여전히 좋은 방법으로 남아 있습니다. –