13
Сен
2021

Составление запроса в БД

Всем привет!
Кто может помочь составить запрос в бд. Есть сущность Person & Car, между ними связь many2many, у Car есть вложенный enum-class Type, который в свою очередь является полем Person( private Car.Type type;)

есть запрос:
Select p from Person where p.type

Проблема в том, что в самой таблице Person колонка type-не содержет значений как обратиться в табу car в одном запросе, вытащить оттуда тип. через запрос к Person???Тип передаётся параметром в запрос, прилетает от клиента(если это важно).
Сделать join или where = c.type? В коде выглядит так(без подробностей если):

@Entity
public class Person{
@NotNull
@Enumerated(EnumType.STRING)
privat Car.Type carType;
...
@ManyToMany
    @JoinTable(
            name = "car_type_person",
            joinColumns = @JoinColumn(name = "person_id"),
            inverseJoinColumns = @JoinColumn(name = "car_id")
    )
private Set<Car> carTypes = new HashSet<>();
 // other fields and methods
}

@Entity
public class Car {

   // fields/methods

@Getter
@RequiredArgsConstructor
public enum Type{
    OFF_ROAD("off_road");
    HYBRID("hybrid");
    ...
 private final String path;
    }
}

вопрос в том, как через запрос к Person получать только person с определённым типом Car. У меня пока вот что:

select p frome Person p left join p.carTyps c where c.type = :type

но получаю всех Person без учёта Type((

Источник: https://ru.stackoverflow.com/questions/1328074/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0-%D0%B2-%D0%91%D0%94

Тебе может это понравится...

Добавить комментарий