आप इस तरह डीटीओ प्रोजेक्शन में संग्रह का चयन नहीं कर सकते:
SELECT new com.tim.core.dto.client.MinimalContactDTO(c.id, c.version, c.name, c.title, c.email, c.createdDate, **c.phones**)
परिणामसेट एक स्प्रेडशीट की तरह है, वस्तुओं के ग्राफ़ की तरह नहीं।
आपको अपना डीटीओ इस तरह बदलना है:
public MinimalContactDTO(
Long id, Long version, String name, String title, String email,
Date createdDate, ContactPhone phone) {
...
}
अब, आप एक बार में केवल एक फ़ोन पास कर सकते हैं:
SELECT new com.tim.core.dto.client.MinimalContactDTO(
c.id, c.version, c.name, c.title, c.email, c.createdDate, p)
from CONTACT c
JOIN c.phones p
where
(
c.localRecordStatus IS NULL OR
c.localRecordStatus IN (:openStatusList) )
)
फिर, आप हाइबरनेट ResultTransformer
।