I have next entities:
public class Photo {
Long id;
String url;
@ManyToOne
@JoinColumn(name ="user_id")
User user;
// other fields and getters/setters
}
And second:
public class User {
Long id;
@OneToMany(mappedBy = "user")
private Collection<Photo> photos;
// other fields and getters/setters
}
DTO:
public class UserDTO {
Long id;
List<String> photosUrls;
}
And HQL query:
select u.id, p.url from User as u inner join u.photos as p
where u.id = :id
In result i want my UserDTO object, which i will use in rest(json). But my query like this throws exceptions, with error:
HibernateSystemException: IllegalArgumentException occurred while calling setter for property [com.dto.UserDTO.photosUrls (expected type = java.util.List)]; target = [com.dto.UserDTO@7650a5f3], property value = [some url]
I can't find right solution to get result objects list like:
List<UserDTO> result;
I read another answer, but my result of List will contain dublicates of users id and unique photo url.
user_id url
1 http1
1 http2
3 http3
3 http4
This question more explained that this question. And, also, there are no right answer.