Пример случая
Код: Выделить всё
@Entity
public class User {
private Long id;
private String name;
private String lastName;
}
Код: Выделить всё
@Entity
public class Address {
private Long id;
private String foo;
private String bar;
}
Код: Выделить всё
@Getter
@AllArgsConstructor
public class DataResultQuery {
private String name;
private String lastName;
private Address firstAddress;
private Address lastAddress;
}
Код: Выделить всё
public class Example {
public DataResultQuery getData(Long id) {
var builder = entityManager.getCriteriaBuilder();
var query = builder.createQuery(DataResultQuery.class);
var user = query.from(User.class);
var address = user.join(User_.addresses);
var firstAddress = getSubquery(address);
var lastAddress = getSubquery(address);
query.multiselect(
user.get(User_.name),
user.get(User_.lastName),
firstAddress.getSelection(),
lastAddress.getSelection()
);
query.where(); //Predicates
var typedQuery = entityManager.createQuery(query);
return typedQuery.getSingleResult();
}
private Subquery getSubquery(Join
Подробнее здесь: [url]https://stackoverflow.com/questions/78790424/jpa-subquery-return-object-and-use-on-query-multiselect[/url]
Мобильная версия