Как извлечь список и отобразить в DTO с отображением один ко многим в JPA? - PullRequest
0 голосов
/ 30 апреля 2019

У меня проблема с получением списка в JPA. Я знаю, что эта проблема связана с картированием «Один ко многим» мое требование состоит в том, чтобы получить список мест вместе с массивом изображений мест в месте dto. Но мой запрос выдает ошибку:

2019-04-30 07: 56: 20.504 ВНИМАНИЕ 10796 --- [nio-8888-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper: Ошибка SQL: 1064, SQLState: 42000 2019-04-30 07: 56: 20.504 ОШИБКА 10796 --- [nio-8888-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper: у вас есть ошибка в вашем Синтаксис SQL; проверьте руководство, которое соответствует вашему серверу MySQL версия для правильного синтаксиса для использования рядом с 'col_11_0_ с места place0_ внутреннее соединение place_image placeimage1_ на place0_.i 'в строке 1 org.springframework.dao.InvalidDataAccessResourceUsageException: может не извлекать ResultSet; SQL [н / п]; вложенное исключение org.hibernate.exception.SQLGrammarException: не удалось извлечь ResultSet

Я публикую здесь фрагменты кода. Пожалуйста, дайте мне знать, как я могу получить набор результатов с отображением один ко многим.

DAO:

@Override
public List<PlaceDto> findPlacesByCondition(String condition) {
        return entityManager
                .createQuery("select new com.app.hop.models.dto.PlaceDto(p.id, p.name, p.subLocality, p.locality, p.postalCode,"+ 
    "p.administrativeArea, p.country, p.latitude, p.longitude," + 
    "p.rating, p.reviewCount,p.placeImages) from Place as p "+condition, PlaceDto.class).getResultList();
}

Сущность:

@Entity
@Table(name="place")
public class Place {

    @Id
    @GeneratedValue(generator = "UUID")
    @GenericGenerator(
        name = "UUID",
        strategy = "org.hibernate.id.UUIDGenerator"
    )
    @org.hibernate.annotations.Type(type="uuid-char")
    private UUID id;

    private String name;
    private String subLocality;
    private String locality;
    private String postalCode;
    private String administrativeArea;
    private String country;
    private Double latitude;
    private Double longitude;

    private Double rating;
    private Long reviewCount;

    @OneToMany(mappedBy="place",cascade=CascadeType.PERSIST,fetch=FetchType.EAGER)
    private Set<PlaceImage> placeImages = new LinkedHashSet<>();

}

Класс DTO:

public class PlaceDto {

    private UUID id;

    private String name;
    private String subLocality;
    private String locality;
    private String postalCode;
    private String administrativeArea;
    private String country;
    private Double latitude;
    private Double longitude;

    private Double rating;
    private Long reviewCount;
    private Set<PlaceImage> placeImages = new LinkedHashSet<>();

    public PlaceDto(){}

    public PlaceDto(UUID id, String name, String subLocality, String locality, String postalCode,
            String administrativeArea, String country, Double latitude, Double longitude, 
            Double rating, Long reviewCount,Set<PlaceImage> placeImages){
        this.id =id;
        this.name =name;
        this.subLocality = subLocality;
        this.locality = locality;
        this.postalCode = postalCode;
        this.administrativeArea = administrativeArea;
        this.country = country;
        this.latitude = latitude;
        this.longitude =longitude;
        this.rating = rating;
        this.reviewCount = reviewCount;
        this.placeImages=placeImages;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...