Как выбрать только определенные поля с помощью Quarkus Panache?
Quarkus
упрощает сопоставления Hibernate ORM с Panache
.
Вот пример моего entity
а также PanacheRepository
:
@Entity
public class Person {
@Id @GeneratedValue private Long id;
private String firstName;
private String lastName;
private LocalDate birth;
private Status status;
}
@ApplicationScoped
public class PersonRepository implements PanacheRepository<Person> {
// example
public Person findByName(String name){
return find("name", name).firstResult();
}
// ! and this is what I tried, but it's not possible to do it this way
// all the methods return Person or something of type Person like List<Person>
// so basically this won't even compile
public List<String> findAllLastNames() {
return this.find("select p.lastName from Person p").list();
}
}
Все руководства объясняют, как писать разные запросы, но неясно, как выбирать только определенные атрибуты.
Если мне не нужно все Person
объект, а скорее lastName
всех лиц в моей БД?
Можно ли выбрать только определенные атрибуты с помощью Quarkus Panache
?
3 ответа
Решение
В настоящее время это невозможно, вы можете подписаться на эту проблему, касающуюся проекции для Hibernate с Panache: https://github.com/quarkusio/quarkus/issues/6261
Не стесняйтесь голосовать за это (+1 реакция) и оставляйте отзывы.
Как сказал user2042457 , эта функция была добавлена, и ее документация доступна здесь .
Вы можете использовать параметры запроса ->
Map<String, Object> params = new HashMap<>();
params.put("fisrtName", fisrtName);
params.put("lastName", lastName);
final List<String> enetityList = Person.list("fisrtName= :fisrtName and lastName= :lastName", params);