2014-04-10 5 views
0

나는 많은 프로퍼티를 가진 모델을 가지고 있으며, 그 중 몇 가지 속성 만 가진 간단한 테이블을 생성해야한다.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, addresscode 얻기 개체 것은 다르게 작동하는 것 같다. SomeData 객체를 만들고 부분 데이터로 채우는 대신 query.getResultList()을 사용하는 대신 행을 나타내는 Object 배열 목록을 사용합니다.

내가 요청한 데이터로만 채워진 SomeData 객체의 목록을 나에게주기 위해 Hibernate에게 말할 수있는 방법이 있습니까?

답변

2

사용이 HQL :

SELECT new SomeData(c.name, c.code, c.address) FROM SomeData c 

당신이 이것에 대한 기존의 생성자를 사용한다는 것을 명심하시기 바랍니다.

결과는 SomeData의 목록이됩니다.

+0

트릭을 수행합니다. 감사! 한 가지 더 빠른 질문입니다. 그 일을하는 좋은 방법입니까? 필자는 테이블을 채우기 위해 데이터 모델을 수정하거나 추가 모델을 만들 수 없으므로 시간과 메모리를 적게 차지한다고 가정하고 있습니다. 내 가정이 정확합니까 아니면 다른 방법으로 최적화해야합니까? – MrPlow

+0

다른 방법으로도이를 수행 할 수 있습니다. 테이블을 분리하여 필요한 데이터 만 나열 할 수 있습니다. 나는이 경우에 더 좋을 것이라고 생각하지만 때로는 옵션이 아닙니다. 그렇게 할 수 없다면 부분적으로 모델을 채워야하는 경우 여전히 좋은 방법으로 남아 있습니다. –

관련 문제